• 某年某月的某一天


    某年某月的某一天
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 58(31 users) Total Accepted: 32(26 users) Rating: Special Judge: No
    Description

      因为大雄考了有史以来也是唯一一次的100分,叮当猫答应带大雄去未来看一看。但是笨蛋大雄把时光机的时间调错了,结果回到了古代。叮当猫的时光机是这么用的:输入一个数n,时光机就会去到n天后或者是n天前,然后选择是往未来还是回古代。但是大雄只记得输入n天,忘了选择是去未来了。

      现在告诉你大雄输入的天数,请你算出本来他们打算去的是未来哪一天以及现在在古代的哪一天。以今天,即2013年9月7号为当前天数,即算出2013年9月7号的n天前和n天后是几年几月几日。

    Input

      第一行输入一个数T,表示有T组样例。

      接下来T行是T组数据,每组数据包含一个正整数n(n<=100000)。

    Output

      请计算并输出大雄本来打算去的未来的某年某月某日,以及最后去了的古代的某年某月某日。

      输出日期格式为YYYY/MM/DD,两个日期中间用一个空格隔开,每组数据占一行,详情参考simple output。

    Sample Input

    3

    18

    26

    31

    Sample Output

    2013/09/25 2013/08/20

    2013/10/03 2013/08/12

    2013/10/08 2013/08/07

    Author
    曾卓敏

    做麻烦了

    我的代码:

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    using namespace std;
    bool check(int year)
    {
    if((year%4==0&&year%100!=0)||(year%400==0))
    {
    return true;
    }
    return false;
    }
    int year,month,day;
    void up(int n)
    {
    year=2013;
    month=9;
    day=7;
    if(n>=24)
    {
    n-=24;
    month=10;
    day=1;
    }
    while(n>0)
    {
    if(month==2)
    {
    if(check(year))
    {
    if(n>=29)
    {
    n-=29;
    month++;
    day=1;
    }
    else
    {
    day+=n;
    n=0;

    }
    }
    else
    {
    if(n>=28)
    {
    n-=28;
    month++;
    day=1;
    }
    else
    {
    day+=n;
    n=0;

    }
    }
    }
    else if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
    {
    if(n>=31)
    {
    n-=31;
    month++;
    if(month>12)
    {
    year++;
    month=1;
    }
    day=1;
    }
    else
    {
    day+=n;
    n=0;
    }
    }
    else
    {
    if(n>=30)
    {
    n-=30;
    month++;
    day=1;
    }
    else
    {
    day+=n;
    n=0;
    }
    }
    }
    }
    void down(int n)
    {
    year=2013;
    month=9;
    day=7;
    if(n>=7)
    {
    n-=7;
    day=31;
    month--;
    }
    while(n>0)
    {
    if(month==3)
    {
    if(n>=31)
    {
    if(check(year))
    {
    n-=31;
    month--;
    day=29;
    }
    else
    {
    n-=31;
    month--;
    day=28;
    }
    }
    else
    {
    day-=n;
    n=0;
    }
    }
    else if((month==1)||(month==8))
    {
    if(n>=31)
    {
    month--;
    if(month==0)
    {
    year--;
    month=12;
    }
    day=31;
    n-=31;
    }
    else
    {
    day-=n;
    n=0;
    }
    }
    else if((month==5)||(month==7)||(month==10)||(month==12))
    {
    if(n>=31)
    {
    month--;
    day=30;
    n-=31;
    }
    else
    {
    day-=n;
    n=0;
    }
    }
    else if(month==2)
    {
    if(check(year))
    {
    if(n>=29)
    {
    n-=29;
    day=31;
    month--;
    }
    else
    {
    day-=n;
    n=0;
    }
    }
    else
    {
    if(n>=28)
    {
    n-=28;
    day=31;
    month--;
    }
    else
    {
    day-=n;
    n=0;
    }
    }
    }
    else
    {
    if(n>=30)
    {
    n-=30;
    month--;
    day=31;
    }
    else
    {
    day-=n;
    n=0;
    }
    }
    }
    }

    int main()
    {
    int T;
    while(~scanf("%d",&T))
    {
    while(T--)
    {
    int n;
    scanf("%d",&n);
    up(n);
    printf("%04d/%02d/%02d ",year,month,day);
    down(n);
    printf("%04d/%02d/%02d ",year,month,day);
    }
    }
    return 0;
    }

  • 相关阅读:
    Day 31 Event事件/进程池和线程池/高性能爬取梨视频/协程
    scp命令
    [Influxdb]记录
    REMOTE HOST IDENTIFICATION HAS CHANGED!
    【转载】Java异常控制机制和异常处理原则
    html转成PDF,替换内容
    SOAP请求-示例
    InputStream转成String
    [集合操作]List对象数组获取元素值非空对象及根据对象元素值排序取最大&取对象数组的对象元素集合&条件去重&条件分组
    maven deploy jar包到远程仓库400
  • 原文地址:https://www.cnblogs.com/beige1315402725/p/4864946.html
Copyright © 2020-2023  润新知