您的位置:首页 > 其它

Hdu 4515 小Q系列故事——世界上最遥远的距离 (日期模拟)

2013-03-26 19:25 274 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4515

一开始想了一个从年到月一层一层处理的,最后发现有bug,还是直接模拟吧。。。

#include <cstdio>

int mon[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};

int Judge (int n)  //闰年返回1
{
    return (n%4==0 && n%100!=0) || n%400==0;
}

int main ()
{
	int T;
	scanf("%d",&T);
	while (T--)
    {
		int change,t;
		scanf("%d",&change);
		int n=change;
		int y=2013;
		int m=3;
		int d=24;
		while (n--)
		{
			t=Judge(y);
			d++;
			if (d>mon[t][m])
			{
				d=1;
				m++;
				if (m==13)
					y++,m=1;
            }
        }
		printf("%04d/%02d/%02d ",y,m,d);
		y=2013,m=3,d=24;
		while (change--)
		{
			d--;
			t=Judge(y);
			if (d<1)
			{
				m--;
				if (m==0)
				{
					m=12;
					y--;
				}
				d=mon[t][m];
			}
		}
		printf("%04d/%02d/%02d\n",y,m,d);
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: