iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
SideProject30

UVA題型研究系列 第 23

DAY23:Hartals 

  • 分享至 

  • xImage
  •  

30 UVA10050 Hartals
內容
一個社會研究組織採用了一組簡單的參數來模擬我們國家政黨運作的行為。
參數之一是一個正整數h,h稱為罷會(hartal)參數,它表示同一個政黨連續兩次連續罷會的間隔天數。
儘管該參數有點過於簡單,但還是能用於預測政黨罷會造成的影響。

以下範例為您說明:
考慮現在有三個政黨。假設h1 = 3,h2 = 4,h3 = 8,其中hi是第i方的罷會參數。
現在,我們將模擬這三個方在N = 14天的罷會行為。
模擬的起始天一定是星期天,並假設在每週的假日(星期五和星期六)不會有任何罷會情形。

上面的模擬顯示,在14天內將會罷會5天(分別在第3、4、8、9和12天)。
第6天沒有罷會,因為它屬於假日(星期五)。由此可知我們在2週內損失了5個工作天。

在這個問題中,考慮到多個政黨的罷會參數和天數N,您的工作是計算出這N天內我們因為罷會損失多少工作天。

輸入說明
輸入第一行有一個整數T,代表有T組測資。
每組測資第一行包含一個整數N (7 ≤ N ≤ 3650),N代表模擬的天數。
下一行包含一個整數P (1 ≤ P ≤ 100),表示有幾個政黨。
接下來的P行,第i行包含一個正整數hi(永遠不會是7的倍數),代表第i個政黨的罷會參數。

輸出說明
對於每組測資,輸出這N天內因為罷會損失多少工作天。

範例輸入 #1
2
14
3
3
4
8
100
4
12
15
25
40
範例輸出 #1
5
15
解題:
計算出政黨罷工天數。

  1. 輸入的第一行數字為接下來有多少case需要處理。
  2. 接下來美行數字分別代表:多少天數 →多少的政黨→每個政黨所罷工的日期倍數(Ex 3 則3的倍數為某政黨的罷工日)。
  3. 星期五、六為假日,如果剛好在此天罷工,則不需計算。

#使用者輸入一個整數n,表示有n組測試案例
n = int(input()) 

#進行n次迴圈,每次迴圈處理一組測試案例
for _ in range(n): 
    # 使用者輸入兩個整數d和m,分別表示天數和整數數量
    d = int(input()) 
    m = int(input()) 

    #建立一個長度為m的列表c,初始值為0
    c = [0] * m 

    #使用者輸入m個整數,表示每個整數數組中的數值
    for i in range(m): 
        c[i] = int(input()) 

    #初始化計數器total為0,用於計算符合條件的天數
    total = 0 

    #迴圈從1到d+1,表示計算每一天是否符合條件
    for i in range(1, d+1): 
        # 如果是星期六(6的倍數)或星期日(7的倍數),則跳過這一天,繼續下一天的判斷
        if i % 7 == 6 or i % 7 == 0: 
            continue 

        #在列表c中迴圈,判斷i是否可以整除c[j]
        for j in range(m): 
            if i % c[j] == 0: 
                # 如果可以整除,計數器total加1,並跳出迴圈
                total += 1 
                break 

    #輸出符合條件的天數total
    print(total) 

上一篇
DAY22:Parity
下一篇
DAY24:All You Need Is Love
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言