[ACM]某一天的n天后是几年几月几日

Description

     小Q,2012年9月10日步入大学。刚刚步入大学的小Q,依旧怀念着以前的生活,所以他每天都会计算现在离刚刚开学过

去了多少天。可是某一天,突发奇想,想问你,给你n天,让你计算2012年9月10日后的n天是几年几月几日,比如
n=10,则
日期是2012年9月20日。这里你要注意可能会出现闰年的情况

Input

 第一行一个整数T,表示有T组数据。

每组数据输入一个n(n<=10000)

Output

每行输出,n天后的几年几月几日,年月日用/分开,细节看样例输出

Sample Input

3
1
10
20

Sample Output

2012/9/11
2012/9/20
2012/9/30

解题思路:
刚看到这题感觉完了,肯定做不出来,因为感觉很复杂。不过后来理清思路,把所有情况都考虑到,还是做出来了,心理状态很重要啊。天数一天天的加,月末月份加一,日数为1,年末年份加1,月份为1,考虑不同月份的天数,考虑是否为闰年。

代码:

#include <iostream>
using namespace std;
int main()
{
    int T;
    int i;
    cin>>T;
    for(i=1;i<=T;i++)
    {
        int year,month,day;
        year=2012;
        month=9;
        day=10;//初始化
        int days;
        cin>>days;
        int j;
        for(j=1;j<=days;j++)
        {
            day=day+1;//天数一天天的加
            if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
            {
                if(day==32)
                {
                    month=month+1;
                    day=1;
                }
                if(month==13)
                {
                    year=year+1;//进位
                    month=1;//月初
                }
            }
            if(month==2)//特殊的月份
            {
                if(((year%4==0&&year%100!=0)||year%400==0))//判断是否为闰年
                {
                  if(day==30)
                  {
                      day=1;
                      month=month+1;
                  }
                }
                else
                {
                    if(day==29)
                    {
                        day=1;
                        month=month+1;
                    }
                }
            }
            if(month==4||month==6||month==9||month==11)
            {
                if(day==31)
                {
                    month=month+1;
                    day=1;
                }
                if(month==13)
                {
                    year=year+1;
                    month=1;
                }
            }
        }
        cout<<year<<"/"<<month<<"/"<<day<<endl;
    }
    return 0;
}


运行截图:


posted @ 2013-06-17 22:12  同学少年  阅读(457)  评论(0编辑  收藏  举报