当年份为闰年时二月份为29天,其他则为28,故要特别讨论,该题直接模拟即可,根据天数递推,时间复杂度为O(N)。
#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
#define N 100000
using namespace std;
const ll inf=0x3f3f3f;
const double PI=acos(-1);
const int mod=32768;
int main()
{ios
int year,month,day,n;
int mon[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d%d",&year,&month,&day);
scanf("%d",&n);
if((year%4==0&&year%100!=0)||year%400==0)
{
mon[2]=29;
}
else
mon[2]=28;
for(int i=1; i<=n; i++)
{
day+=1;
if(day>mon[month])
{
day=day-mon[month];
month++;
if(month>12)
{
year++;
month=1;
if((year%4==0&&year%100!=0)||year%400==0)
{
mon[2]=29;
}
else
mon[2]=28;
}
}
}
printf("%d %d %d",year,month,day);
return 0;
}