标签:
Description
Input
Output
Sample Input
1730 1740 1750 1751 -1
Sample Output
2004-09-26 Sunday 2004-10-06 Wednesday 2004-10-16 Saturday 2004-10-17 Sunday
从这道题也发现了自己的错误 经常犯的一个错误 就是总是想着节省空间 结果不是超时 就是忽略为何节省空间。。
以后不能这样了。
#include <stdio.h>
int day[9000];
int main()
{
for(int i=2000;i<=9999+10;i++)
{
if((i%4==0&&i%100)||i%400==0)
day[i-2000]=366;
else
day[i-2000]=365;
}
int n;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char week[7][15]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
while(~scanf("%d",&n)&&n!=-1)
{
if(n==0)
{
printf("2000-01-01 Saturday\n");
continue;
}
n++;
int sum=0,Year=0,Month=0,Day=0;
int all=n;
for(int i=0;;i++)
{
sum+=day[i];
if(sum>=n)
{
Year=i;
sum-=day[i];
break;
}
}
Year=Year+2000;
n=n-sum;
if(day[Year-2000]==366) mon[2]=29;
else mon[2]=28;
sum=0;
for(int i=1;i<13;i++)
{
sum+=mon[i];
if(sum>=n)
{
Month=i;
sum-=mon[i];
break;
}
}
Day=n-sum;
printf("%d-",Year);
if(Month<10)
printf("0%d-",Month);
else
printf("%d-",Month);
if(Day<10)
printf("0%d",Day);
else
printf("%d",Day);
printf(" %s\n",week[(all+5)%7]);
}
return 0;
}标签:
原文地址:http://blog.csdn.net/su20145104009/article/details/51372257