题目描述 Description
假设现在是2013年1月1日0:00分00秒,现在给出一个秒数S,求过S秒后时那年那月那日几时几分几秒.(设每月30天)
输入描述 Input Description
(多数据) 每行一个正整数S,当S=0时,输入结束。
输出描述 Output Description
每行以XnXyXrX:X:X(小时化为24小时制)
样例输入 Sample Input
5
100
86400
0
样例输出 Sample Output
2013n1y1r00:00:05
2013n1y1r00:01:40
2013n1y2r00:00:00
数据范围及提示 Data Size & Hint
【数据范围】
对于50%的数据 S≤20,000, 数据组数≤1000
对于100%的数据 S≤100,000, 数据组数≤5000
【提示】
0:00:05按0: 0:5输出算错
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
int main()
{
int n;
int day=1;
long s=0;
int f=0,h=0;
while(scanf("%ld", &s))
{
if(s==0)
break;
day=1;
f=0;
h=0;
int a=0,b=0,c=0,x=0,y=0;
if(s>=31104000)
{
x=s/31104000;
s=s%31104000;
}
if(s>=2592000)
{
y=s/2592000;
s=s%2592000;
}
if(s>=86400)
{
a=s/86400;
day+=a;
s=s%86400;
}
if(s>=3600)
{
b=s/3600;
h+=b;
s=s%3600;
}
if(s>=60)
{
c=s/60;
f+=c;
s=s%60;
}
printf("%dn%dy%dr%02d:%02d:%02ld\n",x+2013,y+1,day,h,f,s);
}
return 0;
}