iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
SideProject30

UVA題型研究系列 第 11

DAY11:date judgment

  • 分享至 

  • xImage
  •  

14 UVA12019 Doom's Day Algorithm

內容
給日期,問那天星期幾

末日演算法並不是計算世界末日的方法。 它是由數學家 John Horton Conway 創建的演算法,用於計算一周中的哪一天(星期一、星期二等)對應於某個日期。
該演算法基於世界末日的思想,即一周中的某一天總是發生在相同的日期。 例如,4/4(4 月4 日)、6/6(6 月6 日)、8/8(8 月8 日)、10/10(10 月10 日)和12/12(12 月12 日)十二月)是總是發生在世界末日的日期。 所有的歲月都有自己的末日。
2011年,世界末日是星期一。 所以 4/4、6/6、8/8、10/10 和 12/12 都是星期一。 使用該信息,您可以輕鬆計算任何其他日期。 例如,2011年12月13日為星期二,2011年12月14日為星期三等。
其他發生在世界末日的日子有 5/9、9/5、7/11 和 11/7。 此外,在閏年,我們有以下世界末日:1/11(1 月 11 日)和 2/22(2 月 22 日),非閏年有 1/10 和 2/21。
給定 2011 年的日期,您必須計算它發生在一周中的哪一天。

輸入說明
第一行有一個T代表詢問的日期數(T<=100)
接下來有T行,每行都有一組M、D分別代表月份、日期

輸入可以包含不同的測試案例。 輸入的第一行表示測試案例的數量。
對於每個測試案例,有一行包含兩個數字:M D。M 代表月份(從 1 到 12),D 代表日期(從 1 到 31)。 該日期始終有效。

輸出說明
當天星期幾工作

對於每個測試案例,您必須輸出該日期在 2011 年發生的星期幾。星期幾將為:星期一、星期二、星期三、星期四、星期五、星期六、星期日。

範例輸入#1
9
1 6
2 28
4 5
5 26
8 1
11 1
12 25
12 31
3 9
範例輸出#1
週四
週一
週二
週四
週一
週二
星期日
週六
週三


#定義一個列表a,包含每個月份的天數
a = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

#讀取一個整數n,表示要處理的測試案例數
n = int(input())

#進行n個測試案例的處理
for i in range(n):
    # 讀取兩個整數x和y,代表日期中的月份和日期
    x, y = map(int, input().split())

    #遍歷x之前的月份,並將天數加總到y,得到總天數
    for j in range(x-1):
        y += a[j]

    #減去1,以使日期從1月1日起始,而不是1月0日
    y -= 1

    #使用模運算符判斷星期幾並輸出對應的結果
    if y % 7 == 0:
        print("Saturday")
    elif y % 7 == 1:
        print("Sunday")
    elif y % 7 == 2:
        print("Monday")
    elif y % 7 == 3:
        print("Tuesday")
    elif y % 7 == 4:
        print("Wednesday")
    elif y % 7 == 5:
        print("Thursday")
    elif y % 7 == 6:
        print("Friday")

上一篇
DAY10:Replacement symbol
下一篇
DAY12:Jolly Jumpers
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言