题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <iostream>
using namespace std;
int Getmonthday(int year,int month){
int monthday[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month==2 && ((year % 4 ==0 && year % 100!= 0) || year %400 ==0)) return 29;
return monthday[month];
}
int main() {
int m,year,month,day,number;
while(cin >> m){
while (cin>>year>>month>>day>>number){
while(number>=0){
int d = Getmonthday(year,month);
if(d-day < number){
number -= d-day;
month++;
day =0;
if(month >= 13){
month =1;
year ++;
}
}
else {
day+=number;
break;
}
}
printf("%04d-%02d-%02d\n",year,month,day);
}
}
}
// 64 位输出请用 printf("%lld")

查看18道真题和解析