文章
34
粉丝
0
获赞
6
访问
984
#include<bits/stdc++.h>
using namespace std;
int month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool isLeapYear(int y){
return (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0));
}
int main(){
int n; cin >> n;
int y, m, d, cnt;
while(n-- > 0){
cin >> y >> m >> d >> cnt;
month[2] = isLeapYear(y) ? 29 : 28;
// 计算初始日期为当年的第几天
int sum1 = d;
for(int i = 1; i < m; i++){
sum1 += month[i];
}
// 从年初开始计算结束日期
cnt += sum1;
m = 1; d = 0;
while(cnt > 0){
if(cnt > month[m]){
cnt -= month[m];
if(m == 12){
m = 1;
y ++;
month[2] = isLeapYear(y) ? 29 : 28;
} else {
m ++;
}
} else {
d = cnt;
break;
}
}
printf("%04d-%02d-%02d\n", y, m, d);
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发