吉姆拉爾森 日期題目 星期幾,相差天數。

2021-10-23 06:02:12 字數 960 閱讀 5021

kim larsen calculation formula:請耐心看完噢,想了好久好久才寫出來的。

if(month == 2 || month == 1) 

int weekday=(day + 1 + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400)%7;

(年份偏差)365 = 7*52+1: 一年後的同一天星期滯後一天,所以多一年多一天(+year)%7為偏移的星期。

其中year/4 - year/100 + year/400是因為閏年為366天比365多一天:修正閏年還要多滯後一天。

(月份偏差)一月 和 二月當成去年的 13月和14月,並且假設每個月都是28天:其中最初始的一月一日星期一,所以三月一日是星期三:即日子偏差為應當為(day+2+年份偏差+月份偏差)。

之後-1+2*month + 3*(month+1)/5為第month(3<=month<=14)月的偏移值(%7為星期的偏移量),可以驗算一下:

為從3月到2月每個月的星期偏差值。三月從周二開始沒有偏差,但三月為31天(4*7+3)使得四月偏差3天。依次類推,可知公式正確。

綜合為(day+ 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400 + 1)%7。

從上述可得知:如果是輸入兩個日期。可計算與某乙個相同的日子相差多少天。相減便可。

距離0年0月0日的日子有

int days=365*year+year/4-year/100+year/400+month*28+2*month+3*(month+1)/5+day;

計算星期幾 蔡吉姆拉爾森公式的使用

這個公式可以有效的計算當前日期是星期幾 w d 2m 3 m 1 5 y y 4 y 100 y 400 7 但是要注意的是每一年的一月份和二月份要當做上一年的十三月份和十四月份來進行計算 include include using namespace std intwhatday int y,in...

基姆拉爾森公式 判斷星期幾

時間限制 2000 ms 記憶體限制 65535 kb 難度 2 描述 acm的iphxer經常忘記某天是星期幾,但是他記那天的具體日期,他希望你能寫個程式幫幫他。輸入 每行有三個整數 year,month,day,日期在1600年1月1日到9600年1月1日之間 輸出輸出對應的星期,用乙個整數表示...

C語言根據日期判斷星期幾(使用基姆拉爾森計算公式)

c語言根據日期判斷星期幾 使用基姆拉爾森計算公式 演算法如下 基姆拉爾森計算公式 w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意 在公式中有個與其他公式不同的地方 程式如下 include stdio.h v...