# Hartals(UVA10050) ## [程式繳交區](https://hackmd.io/@Renektonn/H1PkNJTd1x/edit) ## 題目 [點我](https://onlinejudge.org/external/100/10050.pdf) ## 解題網站 [UVA](https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=991) [ZJ](https://zerojudge.tw/ShowProblem?problemid=e579) ## 演算法 ``` 1. 輸入t 2. 重複t次 2.1 輸入n, p 2.2 宣告陣列arr,代表該天是否罷會 2.3 輸入所有政黨的罷會週期d,對於每個d,將d的所有倍數設為1 2.4 統計非工作天會損失幾天,並重設陣列arr ``` ## 程式碼 ```cpp= #include <bits/stdc++.h> using namespace std; int main() { int t; cin >> t; int arr[3651] = {}; while (t--) { int n, p; cin >> n >> p; for (int i = 1; i <= p; i++) { int d; cin >> d; for (int j = d; j <= n; j += d) { arr[j] = 1; } } int ans = 0; for (int j = 1; j <= n; j++) { // holiday if (j % 7 == 6 or j % 7 == 0) continue; if (arr[j] == 1) { ans++; } } cout << ans << endl; memset(arr, 0, sizeof(arr)); } return 0; } ```