[(year-1)+(year-1)/4-(year/100)+(year/400)+d] %7=x;year年的第d天是星期x
3.關於星期的知識
每個非閏年中,第一天是週幾,最後一天就是週幾 因為 365 / 7 = 52 餘 1
4.
w = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + dy是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。
最好用的是蔡勒公式:
w = [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1
c是世紀數減一,y是年份後兩位,m是月份,d是日數。1月和2月要按上一年的13月和
14月來算,這時c和y均按上一年取值。
兩個公式中的[...]均指只取計算結果的整數部分。算出來的w除以7,餘數是幾就
是星期幾。如果餘數是0,則為星期日。
我們知道,公曆的平年是365天,閏年是366天。置閏的方法是能被4整除的年份在2月加一天,但能被100整除的不閏,能被400整除的又閏。因此,像1600、2000、2400
年都是閏年,而1700、1800、1900、2023年都是平年。西元前1年,按公曆也是閏年。
因此,對於從西元前1年(或公元0年)12月31日到某一日子的年份y之間的所有整年
中的閏年數,就等於
[(y-1)/4] - [(y-1)/100] + [(y-1)/400],
[...]表示只取整數部分。第一項表示需要加上被4整除的年份數,第二項表示需要去掉
被100整除的年份數,第三項表示需要再加上被400整除的年份數。之所以y要減一,這
樣,我們就得到了第乙個計算某一天是星期幾的公式:
w = (y-1)*365 + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + d. (1)
其中d是這個日子在這一年中的累積天數。算出來的w就是西元前1年(或公元0年)12月
31日到這一天之間的間隔日數。把w用7除,餘數是幾,這一天就是星期幾。比如我們來
算2023年5月1日:
w = (2004-1)*365 + [(2004-1)/4] - [(2004-1)/100] + [(2004-1)/400] +
(31+29+31+30+1)
= 731702,
731702 / 7 = 104528……6,餘數為六,說明這一天是星期六。這和事實是符合的。
CSP 第一屆提高組考後總結
心靈雞湯.在學習了三年之後,我們信競迎來了初中最後一次大考,也是第一次 csp cspcs p 考試。考試當天,我自我認為考得還是不錯,但是結果卻差強人意。先說說分數吧,雖說很難看,但是也不得不說 預估 310pt s 310pts 310pts 實際 200pt s 250pts 200pts 2...
河南省第一屆程式設計競賽
試題三 密碼破譯 某組織欲破獲乙個外星人的密碼,密碼由一定長度的字串組成。此組織擁有一些破譯此密碼的長度不同的鑰匙,若兩個鑰匙的長度之和恰好為此密碼的長度,則此密碼被成功破譯。現在就請你程式設計找出能破譯此密碼的兩個鑰匙。標準輸入 第一行 nn 為鑰匙的個數 1 n 1000 第二行 l l 為密碼...
「東信杯」廣西大學第一屆程式設計競賽(同步賽)
不吉利的數 時間限制 c c 2秒,其他語言4秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 在數學中,某個序列的子串行是從最初序列通過去除某些元素但不破壞餘下元素的相對位置 在前或在後 而形成的新序列。假設有一條數列 注意 子數列的次序必須和主...