Vijos P1211生日日数

P1211生日日数
Accepted
标签: [显示标签]

描述

CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。

格式

输入格式

从文件的第一行分别读入YY,MM,DD其中1949<=YY<=2006,日期绝对合法。

输出格式

输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”。

样例1

样例输入1[复制]

1979 4 16

样例输出1[复制]

2006-9-1

限制

来源

oibh
daifh改编


简单思路,定义两个数组,一个数组记录闰年每个月份的天数,另外一个数组记录平年每个月份的天数,因为求得是老师10000天之后的纪念日,所以用一个循环进行累加。判断当前年是否是闰年,过了一个月,日期要初始化为1,过了一年月份初始化为1。多注意这些细节,把握主要思路,这个题目就迎刃而解了!



#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int dm1[12]={31,28,31,30,31,30,31,31,30,31,30,31};  //记录平年天数
    int dm2[12]={31,29,31,30,31,30,31,31,30,31,30,31};  //记录闰年天数
    int y,m,d;
    scanf("%d %d %d",&y,&m,&d);
    for(int i=0;i<10000;i++)
    {
        d++;
        if((y%4==0&&y%100!=0)||(y%400==0))
        {
            if(d>dm2[m-1])
            {
                d=1;
                m+=1;
            }
            if(m>12)
            {
                y++;
                m=1;
            }
        }
        else
        {
            if(d>dm1[m-1])
            {
               d=1;
               m+=1;
            }
            if(m>12)
            {
                y++;
                m=1;
            }
        }
    }
    printf("%d-%d-%d\n",y,m,d);
    return 0;
}




你可能感兴趣的:(数据结构,编程,C++,算法,vijos)