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
解題:
計算出政黨罷工天數。
#使用者輸入一個整數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)