小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
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);
}