题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <cstdio>
#include <iostream>
using namespace std;
int IsLeapYear(int year) {
return (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0));
}
int main() {
int m;
int _day[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
scanf("%d", &m);
for (int i = 0; i < m ; ++i) {
int year, month, day, needSumDay;
scanf("%d %d %d %d", &year, &month, &day, &needSumDay);
//1.当需要累加的天数大于当月剩余的天数,则月份++,并减去当月剩余天数得到新的需要累加的天数
//2.当月份为12月时,则需要将年份++
while (needSumDay > _day[IsLeapYear(year)][month] - day) {
needSumDay -= _day[IsLeapYear(year)][month] - day;
day=0;
if (month < 12) {
++month;
}else {
month = 1;
++year;
}
}
printf("%04d-%02d-%02d\n",year,month,needSumDay);
}
return 0;
}



vivo公司福利 364人发布