4848: 【GESP2503二级】时间跨越

内存限制:1024 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

样例输入 复制

2008
2
28
23
1

样例输出 复制

2008 2 29 0

提示

#include <iostream>
using namespace std;
int main() {
    int y, m, d, h, k;
    cin >> y >> m >> d >> h >> k;
    h += k;
    if (h >= 24) {
        h -= 24;
        d += 1;
        int days = 0;
        if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
            days = 31;
        } else if (m == 4 || m == 6 || m == 9 || m == 11) {
            days = 30;
        } else if (m == 2) {
            if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
                days = 29;
            } else {
                days = 28;
            }
        }
        if (d > days) {
            d -= days;
            m += 1;
            if (m > 12) {
                m = 1;
                y += 1;
            }
        }
    }
    cout << y << " " << m << " " << d << " " << h << "\n";
    return 0;
}