题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <iostream>
using namespace std;
#define isyear(x) ((x%4 ==0)&&(x%100 !=0)||(x%400 == 0))
void GetNewDay(int year,int month,int day,int addday)
{
int _year=year;
int _month=0;
int _day=0;
static int Day[13][2]={0,0 ,31,31, 59,60, 90,91, 120,121, 151,152, 181,182, 212,213, 243,244, 273,274, 304,305, 334,335, 365,366};
int daysum=Day[month-1][isyear(year)]+addday+day;
while(daysum>Day[12][isyear(_year)])
{
daysum-=Day[12][isyear(_year)];
_year++;
}
for(int i=0;i<13;++i)
{
if(daysum>Day[i][isyear(_year)])
{
}
else
{
_month=i;
_day=daysum-Day[i-1][isyear(_year)];
break;
}
}
printf("%d-%02d-%02d\n",_year,_month,_day);
}
int main()
{
int size=0;
cin>>size;
while(size--)
{
int year=0;
int month=0;
int day=0;
int addday=0;
cin>>year>>month>>day>>addday;
GetNewDay(year,month,day,addday);
}
return 0;
}
查看20道真题和解析