。
主要思路;首先把特殊的12月31日的作出来还有31日外。
变量:
int/LL这里用LL。
LL y, m, d, h, k, yy, mm, dd, hh, day, hour;
条件:
yy = y;
mm = m;
dd = d;
day = (h + k) / 24;
hour = (h + k) % 24;
hh = hour;
总和:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {
LL y, m, d, h, k, yy, mm, dd, hh, day, hour;
cin >> y >> m >> d >> h >> k;
yy = y;
mm = m;
dd = d;
day = (h + k) / 24;
hour = (h + k) % 24;
hh = hour;
if (m == 12 ) {
if ( d == 31 ) {
if (day != 0) {
yy++;
mm = 1;
dd = 1;
}
} else {
if (day != 0) {
dd++;
}
}
}
然后 判断大月小月2月31日,30日29/28日及以外。
最后加上闰年。
代码 :
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {
LL y, m, d, h, k, yy, mm, dd, hh, day, hour;
cin >> y >> m >> d >> h >> k;
yy = y;
mm = m;
dd = d;
day = (h + k) / 24;
hour = (h + k) % 24;
hh = hour;
if (m == 12 ) {
if ( d == 31 ) {
if (day != 0) {
yy++;
mm = 1;
dd = 1;
}
} else {
if (day != 0) {
dd++;
}
}
}
if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10)) {
if (d == 31) {
if (day != 0) {
dd = 1;
mm++;
}
} else {
if (day != 0) {
dd++;
}
}
} else if ((m == 4 || m == 6 || m == 9 || m == 11)) {
if (d == 30 ) {
if (day != 0) {
dd = 1;
mm++;
}
} else {
if (day != 0) {
dd++;
}
}
} else if (m == 2) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
if (d == 29 ) {
if (day != 0) {
dd = 1;
mm++;
}
} else {
if (day != 0) {
dd++;
}
}
} else {
if (d == 28 ) {
if (day != 0) {
dd = 1;
mm++;
}
} else {
if (day != 0) {
dd++;
}
}
}
}
cout << yy << ' ' << mm << ' ' << dd << ' ' << hh << endl;
return 0;
}
有一点长但是逻辑清晰没有错误。
如有错误请指出,一定改进。
1794

被折叠的 条评论
为什么被折叠?



