不吉利的日期 PAT

2021-10-06 18:43:56 字數 1426 閱讀 9793

在國外,每月的 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 對應每一組資料,輸出所有符合條件的月份,...