1 条题解

  • 0
    @ 2026-5-10 13:58:27

    #include using namespace std;

    int isLeap(int y) { if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) { return 1; } return 0; }

    int main() { int days; cin >> days;

    int year = 2000;
    int month = 1;
    int day = 1;
    int weekday = (6 + days) % 7;
    
    int monthDays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    int d = days;
    
    while (d > 0) {
        int daysInYear = isLeap(year) ? 366 : 365;
        if (d >= daysInYear) {
            d -= daysInYear;
            year++;
        } else {
            for (int m = 1; m <= 12; m++) {
                int daysInMonth = monthDays[m];
                if (m == 2 && isLeap(year)) {
                    daysInMonth = 29;
                }
                if (d >= daysInMonth) {
                    d -= daysInMonth;
                } else {
                    month = m;
                    day = 1 + d;
                    d = 0;
                    break;
                }
            }
        }
    }
    
    cout << year << "-" << month << "-" << day << " ";
    
    string week[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    cout << week[weekday];
    
    return 0;
    

    }

    信息

    ID
    1126
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    85
    已通过
    23
    上传者