---
# System prepended metadata

title: Hartals(UVA10050)
tags: [CPE一顆星必考題]

---

# 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;
}
```

