4 条题解

  • 1
    @ 2023-4-3 18:35:24

    C++

    Florance

    折磨了我好久好久,已经是历史遗留产物了......

    代码已经过处理,使冗长的代码变得清晰明了

    #include <bits/stdc++.h>
    using namespace std;
    
    bool LeapYear(int y) { //闰年判断
        if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
            return true;
        }
        else {
            return false;
        }
    }
    
    int Days(int y, int m) { //计算某年某月有几天
        if(m == 4 || m == 6 || m == 9 || m == 11) {
            return  30;
        }
        if(m == 2) {
            if(LeapYear(y)) return 29;
            else return  28;
        }
        else return  31;
    }
    
    void Print(int w, int d) { //输出
        cout << " Sun Mon Tue Wed Thu Fri Sat" << endl;
        if(w != 6) {
            for(int i = 0; i <= w; i++) cout << "    ";
        }
        int k;
        if(w == 6) k = -1;
        else k = w;
        for(int i = 1; i <= d; i++) {
            k += 1;
            if(k == 7) { //每一个星期一行
                cout << endl;
                k = 0;
            };
            printf("%4d", i);
        }
    }
    
    int main(){
        int y, m, d;
        cin >> y >> m;
        int w;
    
        d = Days(y, m);
    
        if(m == 1 || m == 2) { // 基姆拉尔森计算公式的坑点
            y -= 1;
            m += 12;
        }
    
        w = (1+2\*m+3\*(m+1)/5+y+y/4-y/100+y/400) % 7; //计算1日是星期几
    
        Print(w, d);
        return 0;
    }
    
    • @ 2023-4-13 14:14:36

      这题C++做的都是牛人

信息

ID
108
时间
1000ms
内存
128MiB
难度
6
标签
递交数
115
已通过
37
上传者