📄 1308.cpp
字号:
#include<stdio.h>
int a[10000],p[10000];
int mon[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};
char f[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
char month[13][21]={"January","February","March","April","May","June","July","August","September","October","November","December"};
int leapyear(int n){
if(n>=1752){
if((n%4==0&&n%100!=0)||n%400==0)
return 1;
else
return 0;
}
else{
if(n%4==0)
return 1;
else
return 0;
}
}
int illegal(int y,int m,int d){
if(y==1582&&m==10&&d>4&&d<15)
return 1;
if(y==1752&&m==9&&d>2&&d<14)
return 1;
else
return y<1||y>9999||m<1||m>12||d<1||d>mon[p[y]][m];
}
int after_1(int y,int m,int d){
if(y>1582) return 1;
else if(y==1582&&m>10) return 1;
else if(y==1582&&m==10&&d>=15) return 1;
return 0;
}
int after_2(int y,int m,int d){
if(y>1752) return 1;
else if(y==1752&&m>9) return 1;
else if(y==1752&&m==9&&d>=14) return 1;
return 0;
}
int main()
{
a[1]=1;
int i,y,m,d,k;
for(i=1;i<2000;i++)
p[i]=leapyear(i);
for(i=2;i<10000;i++)
a[i]=a[i-1]+p[i-1]+365;
while(scanf("%d%d%d",&m,&d,&y)==3){
if(!m&&!d&&!y)
break;
if(illegal(y,m,d)==1){
printf("%d/%d/%d is an invalid date.\n",m,d,y);
continue;
}
k=a[y];
for(i=1;i<m;i++)
k+=mon[p[y]][i];
k+=d;
if(after_1(y,m,d))
k-=10;
if(after_2(y,m,d))
k-=11;
printf("%s %d, %d is a %s\n",month[m-1],d,y,f[k%7]);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -