在國外,每月的 13 號和每週的星期 5 都是不吉利的。特別是當 13 號那天恰好是星期 5時,更不吉利。現在給你乙個年份,請你從小到大依次輸出當年所有13 號是星期 5 的月份。
輸入包含多組資料,每組資料報含乙個正整數year(2000≤year≤9999)。
對應每一組資料,輸出所有符合條件的月份,月份之間用空格隔開。如果當年不存在13號是星期五的月份,就輸出一行luck。
2000
2001
2002
1047
912
本題的題意就是找出13號為星期五的月份1、首先我們要判斷該年是閏年還是平年(被400整除或者非整百年被4整除)
2、然後我們要確定該年1月1日是星期幾(檢視日曆找規律)
3、如果我們確定了1月1日是星期幾,我們就能直接確定該年哪些月份的13號為星期五
4、而1月1日的可能性只有七種,平年和閏年也只有兩種情況,於是我們可以直接找出這14種情況的答案。(例如2023年為潤年1月1日星期六,則符合情況只有10月份)
5、最後就是如何確定該年1月1日是星期幾,我們一步一步分析:
(1)平年:每增加一年,1月1日為星期幾就會向後推進一天,以2023年為起點,得出 :······ (6+(year-2000))%7【加上6是為了使得出的結果與陣列下標相對應】
·(2)閏年:每經過一次閏年後就會在原來基礎上,1月1日為星期幾再向後推進一天,得出:
······ (year-1997)/4+(year-2001)/400-(year-2001)/100【閏年比平年多一天】
·【例如2023年和2001,(year-1997)/4也就是3/4=0和4/4=1,2023年經歷過一次2000閏年後多出一天,1月1日向前推進一天,2023年1月1是星期六,2023年1月1是星期一】
·(3)最後我們結合閏年和平年,得出求1月1日為星期幾的最終公式:
······(6+(year-2000)+(year-1997)/4+(year-2001)/400-(year-2001)/100)%7
#include
intmain()
,};while
(scanf
("%d"
,&year)!=-
1)return0;
}
不吉利日期
描述 在國外,每月的13號和每週的星期5都是不吉利的。特別是當13號那天恰好是星期5時,更不吉利。已知某年的一月一日是星期w,並且這一年一定不是閏年,求出這一年所有13號那天是星期5的月份,按從小到大的順序輸出月份數字。w 1 7 輸入輸入有一行,即一月一日星期幾 w 1 w 7 輸出輸出有一到多行...
不吉利日期
不吉利日期 檢視提交統計提問 總時間限制 1000ms 記憶體限制 65536kb 描述在國外,每月的13號和每週的星期5都是不吉利的。特別是當13號那天恰好是星期5時,更不吉利。已知某年的一月一日是星期w,並且這一年一定不是閏年,求出這一年所有13號那天是星期5的月份,按從小到大的順序輸出月份數字...
不吉利的日期
在國外,每月的 13 號和每週的星期 5 都是不吉利的。特別是當 13 號那天恰好是星期 5時,更不吉利。現在給你乙個年份,請你從小到大依次輸出當年所有13 號是星期 5 的月份。輸入包含多組資料,每組資料報含乙個正整數year 2000 year 9999 對應每一組資料,輸出所有符合條件的月份,...