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;
}