题解 | 日期累加
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <iostream> using namespace std; int main() { int m; while (scanf("%d",&m)!=EOF) { // 注意 while 处理多个 case int y,mon,d,days; for(int i=0;i<m;i++){ scanf("%d %d %d %d",&y,&mon,&d,&days); bool flag=false;//flag=0表示不是闰年 for(int j=1;j<=days;j++){ d++; if(y%4==0&&y%100!=0)flag=true; else if(y%400==0)flag=true; else flag=false; if(mon==2){ if(flag==true&&d>29){ mon=3;d=1; } if(flag==false&&d>28){ mon=3;d=1; } } if(d>31 &&(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)){ d=1; mon++; } if(d>30&&(mon==4||mon==6||mon==9||mon==11)){ d=1; mon++; } if(mon>12){ mon=1; y++; } } printf("%04d-%02d-%02d\n",y,mon,d); } } } // 64 位输出请用 printf("%lld")