USACO Section 1 备忘

计算某年某月某日是星期几的方法

转载自挥着翅膀的女孩

算式:
S=X-1+[(X-1)/4] -[(X-1)/100] +[(X-1)/400]+C
其中 x是公元的年数,C是从这一年的元旦算起到这一天为止(包括这一天是内)的天数。方括号表示其中算式的整数部分,即在计算S的值时,三个方括号中只要算出商数的整数部分,把余数略去不计。求出S的值之后,除以7,余几就是星期几;除尽了就是星期日。

举例:

  1. 计算西安事变发生在星期几。
    解 西安事变发生在 1936年12月12日,所以x=1936 C=347于是可得:
    S=1936-1+[(1936-1)/4] -[(1936-1)/100] +[(1936-1)/400]+347
    =1935+483-19+4+347=2750
    2750÷7=392………6,
    所以西安事变发生在星期六

  2. 计算一下今天(2006年6月11日)是星期几;此时x=2006, C=162,于是可得 :
    S=2006-1+[(2006-1)/4] -[(2006-1)/100] +[(2006-1)/400]+162
    =2005+501-20+5+162=2653
    2653÷7=379,无余数,

所以,今天是星期日。

说明:
这个计算方法根据的是每四年一闰、百年不闰、四百年再闰的历法,该历法是从公元1582年开始实行的,所以,用这个方法可以计算公元1582年以后某年某月某日是星期几

Powered by Jekyll and Theme by solid