2014年NBUT校赛J题
简单时间模拟题
注意闰年的判断
#include<bits/stdc++.h>
using namespace std;
int year[1020],month[1020];
int a1[]={31,28,31,30,31,30,31,31,30,31,30,31};
int a2[]={31,29,31,30,31,30,31,31,30,31,30,31};
int IsLeapYear(int x)
{
if(x%4==0&&x%100!=0||x%400==0)
return 1;
else
return 0;
}
int main()
{
int N,d,m,y;
year[0]=365;
month[0]=31;
for(int i=1;i<=1020;i++)
{
year[i]=year[i-1]+365;
if(IsLeapYear(1700+i)==1)
year[i]++;
}
for(int i=1;i<=1020;i++)
{
if(IsLeapYear(1970+i/12)==0)
month[i]=month[i-1]+a1[i%12];
else
month[i]=month[i-1]+a2[i%12];
}
while(scanf("%d",&N)==1)
{
d=N/86400;
for(int i=0;i<=1020;i++)
{
if(d+1<=year[i])
{
y=i;
break;
}
}
for(int i=0;i<=1020;i++)
{
if(d+1<=month[i])
{
m=i;
break;
}
}
printf("year: %d\n",y+1);
printf("month: %d\n",m+1);
printf("day: %d\n",d+1);
}
return 0;
}