【zznu-夏季队内积分赛3-J】追忆

题目描述

“别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“
现在是阳历2018/8/7,宝儿姐想起自己参加ACM整整1000天了。她想知道她刚入坑是什么时间。那么问题来了,请帮宝儿姐追忆一下某个时间之前n天是什么时间吧。

输入

多实例输入以EOF结束
每行四个数字year month day n用空格隔分别代表 当前年月日,以及查询天数。

输出

输出一个日期,年月日用空格隔开。

样例输入

2018 08 07 1
2018 08 07 8
2018 08 07 1000

样例输出

2018 08 06
2018 07 30
2015 11 11

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1050;

int a[22]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool run(int year)
{
    return year%4==0 && year%100!=0 || year%400==0;
}

int main()
{
    int y , m , d , add;
    while (~scanf("%d%d%d%d", &y, &m, &d, &add))
    {
        while (add -- )
        {
            if (d == 1)
            {
                if (m == 1)
                {
                    y --;
                    m = 12;
                    d = 31;
                }
                else if (m == 3)
                {
                    m = 2;
                    if (run(y)) d = 29;
                    else  d = 28;
                }
                else
                {
                    m --;
                    d = a[m];
                }
            }
            else d --;
        }
        printf("%04d %02d %02d\n", y, m, d);
    }
    return 0;
}
posted @ 2018-08-08 19:30  LesRoad  阅读(250)  评论(0编辑  收藏  举报