九度的1043 输入日期,算该日是星期几
我的AC代码
#include<stdio.h> #include<stdlib.h> #include<string.h> int a[2][12] ={0,3,3,6,1,4,6,2,5,0,3,5, 0,3,4,0,2,5,0,3,6,1,4,6}; char month[12][10] = {"January","February","March","April","May","June","July","August","September","October","November","December"}; char week[7][10] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; int main() { int day,year; char M[10]; while(scanf("%d%s%d",&day,M,&year)!=EOF) { int w,i,m,flag=0; if((year%4==0 && year%100!=0) || year%400==0) { flag=1; } for(i=0;i<12;i++) if(strcmp(M,month[i])==0) m=i; w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+a[flag][m]+day)%7; printf("%s\n",week[w]); } return 0; }
貌似这题只能用这个公式,我用了其他的两个公式,运行都是没有问题的,但就是AC不了不知道为什么,求大神指点
1号WA:
#include<stdio.h> #include<stdlib.h> #include<string.h> int mt[2][12] = {0,3,3,6,1,4,0,3,5,0,3,5, 0,3,4,0,2,5,0,3,6,1,4,6}; char month[12][10] = {"January","February","March","April","May","June","July","August","September","October","November","December"}; char week[7][10] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; int main() { int day,year; char M[10]; while(scanf("%d%s%d",&day,M,&year)!=EOF) { int w,i,y=1,m,flag=0; if((year%4==0 && year%100!=0) || year%400==0) { flag=1; y=2; } for(i=0;i<12;i++) if(strcmp(M,month[i])==0) m=i; w=(year+year/4+year/400-year/100-y+mt[flag][m]+day)%7; printf("%s\n",week[w]); } return 0; }
2号WA:
#include<stdio.h> #include<stdlib.h> #include<string.h> char month[12][10] = {"January","February","March","April","May","June","July","August","September","October","November","December"}; char week[7][10] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; int main() { int day,year; char M[10]; while(scanf("%d%s%d",&day,M,&year)!=EOF) { int w,i,y,c,m; y=year%100; c=year/100; for(i=0;i<12;i++) if(strcmp(M,month[i])==0) m=i+1; if(m==1||m==2) m+=12; w=(y+y/4+c/4-2*c+26*(m+1)/10+day-1)%7; printf("%s\n",week[w]); } return 0; }