题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <stdio.h> #include <stdbool.h> int daytab[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}};//初始化天数数据 bool isLunar(int year){ return(year%100!=0&&year%4==0)||(year%400==0); } int allnumber(int year){ if(isLunar(year)){ return 366; }else{ return 365; } } int main() { int year,month,day,num; int casenum; scanf("%d",&casenum); while (casenum--) { scanf("%d %d %d %d",&year,&month,&day,&num); int row=isLunar(year); //确定年 for(int j=0;j<month;++j){ num+=daytab[row][j]; } num+=day; while(num>allnumber(year)){ num-=allnumber(year); year++; } row=isLunar(year); //确定月 month=0; while(num>daytab[row][month]){ num-=daytab[row][month]; month++; } //确定日 day=num; printf("%04d-%02d-%02d\n",year,month,day); } return 0; }