#include<iostream>
#include<cstdio>
#define ll long
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int a, b, c, n;
int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
bool func(int x) {
return (x % 400 == 0) || (x % 4 == 0) && (x % 100 != 0);
}
int main() {
while (cin>>a>>b>>c>>n) {
n += c;
int flag = 0;
if (func(a))days[2] = 29;
else days[2] = 28;
for (int i = b; i <= 12; i++) {
if (n - days[i] > 0) {
n -= days[i];
}
else {
printf("%04d-%02d-%02d\n", a, i, n);
flag = 1;
break;
}
}
if (flag)continue;
while (n) {
a++;
if (func(a))days[2] = 29;
else days[2] = 28;
for (int i = 1; i <= 12; i++) {
if (n - days[i] > 0) {
n -= days[i];
}
else {
printf("%04d-%02d-%02d\n", a, i, n);
n = 0;
break;
}
}
}
}
return 0;
}
输出格式可以记一下
printf("%04d-%02d-%02d\n", a, i, n);
另外,再次强调,闰年二月是29天,平年是28天。