HDU 4515 模擬

小Q系列故事——世界上最遙遠的距離

Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 2102    Accepted Submission(s): 750


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
全都轉化成天數 然後在翻譯成日期
#include<cstdio> #include<iostream> #define N 735347-31-365 void print(int x); bool ok(int year); int main() {  int n=0;  scanf("%d",&n);  while(n--)  {   int D=0;   scanf("%d",&D);   print(N+D);   printf(" ");   print(N-D);   printf("\n");  }  return 0; } bool ok(int year) {  if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) ) return 1;  return 0; } void print(int x) {  int year=1,month=1,day=1;  for(int i=1;;i++)  {   if(ok(i))   {    if(x-366>0)    {     year++;     x-=366;    }    else if(x-366==0)    {     break;    }    else    {     break;    }   }   else   {      if(x-365>0)      {       year++;       x-=365;      }      else if(x-365==0)      {       break;      }      else      {       break;      }    }  }  printf("%d/",year);    //printf(" %d\n",x);  int c=0;  if(ok(year)) c++;  for(int i=1;i<=12;i++)  {   if(i==1||i==3||i==5||i==7||i==8||i==12||i==10)   {    if(x-31>0)    {     month++;     x-=31;    }    else if(x-31==0)    {     break;    }    else    {     break;    }    //if(x<=31)    //break;   }   else if(i==2)   {    if(x-(28+c)>0)    {     month++;     x-=(28+c);    }       else       {        break;    }  // if(x<=28+c)   // break;   }   else   {    if(x-30>0)    {     month++;     x-=30;    }    else        break;   // if(x<=30)   // break;   }  }  if(month/10)  printf("%d/",month);  else   printf("0%d/",month);  if(x/10)  printf("%d",x);  else  printf("0%d",x); }
發佈了133 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章