zoukankan      html  css  js  c++  java
  • hdu4515小Q系列故事——世界上最遥远的距离

    Problem Description

    世界上最遥远的距离
    不是生与死
    而是我就站在你面前
    你却不知道我爱你

    世界上最遥远的距离
    不是我就站在你面前你却不知道我爱你
    而是明明知道彼此相爱
    却不能在一起

    世界上最遥远的距离
    不是明明知道彼此相爱却不能在一起
    而是相约好了私奔的时间
    我穿越到了未来 你却回去了古代

    ——摘自《小Q失恋日记 》第117卷513页

    当小Q使出浑身解数,终于赢得HR女神芳心的时候,却出现了一个意外情况,那就是白富美HR的妈妈并不同意他们交往,当听说小Q只是一个码农,特别是听说小Q曾经参加过资本主义国家发起的SM/ICPC比赛的时候,更是坚决反对!
    爱情是伟大的,但是得不到亲人祝福的爱情却备受折磨,小Q和HR相约在腾讯第二届编程马拉松大赛进行到第5天的时候(即2013年3月24日),一起“向前穿越D天,然后开启幸福新生活”。
    其勇气可谓令人赞叹,但可怜的小Q却总是备受折磨——小Q理解的”向前穿越”是朝着未来的方向,而女友HR理解的“向前穿越”却是朝着古代的方向!
    假设已知现在的日期和穿越的天数D,你能计算出小Q和女友各自到达的年代吗?
     
    Input
    输入首先包含一个整数N,表示有N组测试用例;
    接下来N行是N组数据,每一行包含一个正整数D(D<=10,0000),D表示向前穿越的天数。
     
    Output
    请计算并输出小Q和女友分别到达的日期,日期格式为YYYY/MM/DD,两个日期中间用一个空格隔开,每组数据占一行,具体输出格式请参见样例。
     
    Sample Input
    2 6 30
     
    Sample Output
    2013/03/30 2013/03/18 2013/04/23 2013/02/22
     
    Source
    #include<stdio.h>
    int main()
    {
        int y[2],m[2],d[2],day,k,tm,dr,i,flog,t;
    
        scanf("%d",&t);
        while(t--)
        {
             y[0]=2013;
             scanf("%d",&day);
             dr=(day+31+28+24)%365;
             k=(day+31+28+24)/365;
             m[0]=1;d[0]=0;
             for(i=1;i<=k;i++)
             {
                 if(y[0]%400==0||y[0]%4==0&&y[0]%100!=0)
                        dr--;
                 y[0]++;
                    if(dr<1)
                    {
                        k--;dr=365;
                    }
             }
             for(i=1;i<=dr;i++)
             {
                 flog=0;
                 if(y[0]%400==0||y[0]%4==0&&y[0]%100!=0)
                        flog=1;
                 d[0]++;
                 if(m[0]==1)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 else if(m[0]==2)
                 {
                  if(flog){tm=d[0]/30;d[0]%=29;m[0]+=tm;if(d[0]==0)d[0]=29;}
                  else {tm=d[0]/29;d[0]%=28;m[0]+=tm;if(d[0]==0)d[0]=28;}
                 }
                 else if(m[0]==3)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 else if(m[0]==4)
                 {tm=d[0]/31;d[0]%=30;m[0]+=tm;if(d[0]==0)d[0]=30;}
                 else if(m[0]==5)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 else if(m[0]==6)
                 {tm=d[0]/31;d[0]%=30;m[0]+=tm;if(d[0]==0)d[0]=30;}
                 else if(m[0]==7)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 else if(m[0]==8)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 else if(m[0]==9)
                 {tm=d[0]/31;d[0]%=30;m[0]+=tm;if(d[0]==0)d[0]=30;}
                 else if(m[0]==10)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 else if(m[0]==11)
                 {tm=d[0]/31;d[0]%=30;m[0]+=tm;if(d[0]==0)d[0]=30;}
                 else if(m[0]==12)
                 {tm=d[0]/32;d[0]%=31;m[0]+=tm;if(d[0]==0)d[0]=31;}
                 if(m[0]>12){y[0]++;m[0]%=12;}
             }
    
    
             y[1]=2013;
             dr=day%365;
             k=day/365;
             if(dr==0){dr=365;k--;}
             m[1]=3;d[1]=24;
             for(i=1;i<=k;i++)
             {
                 if(y[1]%400==0||y[1]%4==0&&y[1]%100!=0)
                        dr--;
                         y[1]--;
                    if(dr<1)
                    {
                        k--;dr=365;
                    }
             }
    
             for(i=1;i<=dr;i++)
             {
                flog=0;
             if(y[1]%400==0||y[1]%4==0&&y[1]%100!=0)
                        flog=1;
                 d[1]--;
                 if(m[1]==1&&d[1]==0)
                 {
                    d[1]=31;m[1]=12;y[1]--;
                 }
                 else if(m[1]==2&&d[1]==0)
                 {
                  d[1]=31;m[1]--;
                 }
                 else if(m[1]==3&&d[1]==0)
                 {
                     d[1]=28;m[1]--;
                     if(flog) d[1]++;
                 }
                 else if(m[1]==4&&d[1]==0)
                 {d[1]=31;m[1]--;}
                 else if(m[1]==5&&d[1]==0)
                 {d[1]=30;m[1]--;}
                 else if(m[1]==6&&d[1]==0)
                 {d[1]=31;m[1]--;}
                 else if(m[1]==7&&d[1]==0)
                 {d[1]=30;m[1]--;}
                 else if(m[1]==8&&d[1]==0)
                 {d[1]=31;m[1]--;}
                 else if(m[1]==9&&d[1]==0)
                 {d[1]=31;m[1]--;}
                 else if(m[1]==10&&d[1]==0)
                 {d[1]=30;m[1]--;}
                 else if(m[1]==11&&d[1]==0)
                 {d[1]=31;m[1]--;}
                 else if(m[1]==12&&d[1]==0)
                 {d[1]=30;m[1]--;}
             }
            printf("%d/%02d/%02d %d/%02d/%02d
    ",y[0],m[0],d[0],y[1],m[1],d[1]);
        }
    }
    /*
    54
    365
    2014/03/24 2012/03/24
    6623
    2031/05/12 1995/02/04
    3478
    2022/10/01 2003/09/15
    647
    2014/12/31 2011/06/16
    0239
    2013/11/18 2012/07/28
    68278
    2200/03/02 1826/04/16
    5477
    2028/03/22 1998/03/26
    53
    2013/05/16 2013/01/30
    646
    2014/12/30 2011/06/17
    4678
    2026/01/13 2000/06/02
    384787
    3066/09/27 0959/09/19
    748
    2015/04/11 2011/03/07
    */
    


  • 相关阅读:
    用户模版
    VC让对话框显示就最大化
    C#中char[]与string之间的转换
    c#调用C++DLL参数对应
    解决:对 PInvoke 函数的调用导致堆栈不对称问题 <转载>
    git 命令的使用
    me 云面试
    Django 自定义模板语法
    Django session 源码流程
    云计算的介绍
  • 原文地址:https://www.cnblogs.com/james1207/p/3260623.html
Copyright © 2011-2022 走看看