⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1308.cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 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 + -