ZZULIOJ 1792: 有点Low的时光机(日期计算)

1792: 有点Low的时光机

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 87   Solved: 17

Submit Status Web Board

Description

1carus偶然得到了一台时光机,输入一个数n,就可以到达n天之后。
穿越后的1carus发现了一个问题,这台时光机比较Low,没有办法显示到达那一天是几月几号,1carus觉得很不开心,你们可以帮他求一下1carus穿越后的日期吗?
本题为多实例。

Input

第一行 y m d 与 n(y,m,d,n皆为正整数)。
y,m,d分别是1carus原先所在时空的年月日,n为1carus穿越了多少天。

Output

输出1carus到达的年月日,格式为 Y M D。

Sample Input

2015 11 11 2

2015 12 30 2

Sample Output

2015 11 13

2016 1 1


重温下日期计算,代码如下:

#include<cstdio>
#include<cstring>

int runnian(int y)
{
	if((y%4==0&&y%100!=0)||(y%400==0))
		return 1;
	else
		return 0;
} 

int main()
{
	int y,m,d,n,i,t;
	while(scanf("%d%d%d%d",&y,&m,&d,&n)!=EOF)
	{
		int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
		while(n--)
		{
			if(runnian(y))
				day[2]++;
			if(m==12&&d==day[m])
			{
				d=1;
				m=1;
				y++;
			}
			else if(d==day[m])
			{
				d=1;
				m++;
			}
			else
				d++;
			day[2]=28;
		}
		printf("%d %d %d\n",y,m,d);
	}
	return 0;
}






你可能感兴趣的:(ZZULIOJ 1792: 有点Low的时光机(日期计算))