• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
james1207

博客园    首页    新随笔    联系   管理    订阅  订阅

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
2013腾讯编程马拉松初赛第三场(3月23日)  
#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\n",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
*/


 

posted @ 2013-08-15 19:16  Class Xman  阅读(218)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3