标签:
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