计算星期几(蔡勒公式)

Description

acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他。

Input

每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间;

Output

输出对应的星期,用一个整数表示;(星期一到星期六用1-6表示,星期日用0表示)

Sample Input

2011 3 6
1949 10 1
2011 4 1
1945 8 15

Sample Output

0
6
5
3

我也是借鉴大神的解释才了解了蔡勒公式QAQ 

acm中的一个小应用

蔡勒公式的应用面不广泛,但是有的时候会用到,了解一下吧。

蔡勒公式只适合于1582年(中国明朝万历十年)10月15日之后的情形。

公式    w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 

所得到的w 代表星期         w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

注意:

当年的1,2月要当成上一年的13,14月进行计算

#include<stdio.h>
int main(){
    int y,m,d,w;
    while(~scanf("%d%d%d",&y,&m,&d)){
        if(m==1||m==2){
            m+=12;y--;
        }
        w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
        printf("%d\n",w);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40564464/article/details/81772023
今日推荐