
图片.png

图片.png
//抄的
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i=0;i<n;i++)
{
int y,m,d,num;
cin>>y>>m>>d>>num;
int date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(num>0)
{
if(num>date[m-1]-d+1)//需要加月甚至加年(先算这个月后面还有几天,加上n是不是还在这个月里,这种情况是不在了需要对月甚至对年做处理了)
{//以 2008 2 3 30为例
if(y%400==0||(y%4==0&&y%100!=0))//来判断这一年是否是闰年
{
date[1]=29;//2月有29天
}else
{
date[1]=28;//平年有28天
}
num=num-date[m-1]+d;
d=0;
m++;
if(m==13)
{
y++;
m=1;
}
}else//这种情况是类似于2008 2 3 10这种,先算这个月后面还有几天,加上n是不是还在这个月里,这种情况是是在这个月里,上面的情况是不在这个月里了
{
d+=num;//2008 2 3 10 -> 2008 2 13,已经计算完了,直接跳出循环,主要是上面麻烦
break;
}
}
printf("%d-%02d-%02d\n",y,m,d);
}
return 0;
}
网友评论