回到 CPE 必考一顆星 49 題選集

UVa 10050 Hartals

( Tip: 點擊左上方的三橫槓選單按鈕,可以收起左側 Pdf 頁。)

Step 1. 題目概要

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

Step 2. 解題思路

  • 從第一個政黨開始逐一處理。

Step 3. 範例輸入與輸出 - Sample Input and Output

Step 4. 參考程式碼 - Accepted Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <bits/stdc++.h>
using namespace std;
int main() {
int T, D, P;
cin>>T;
while(T--) {
cin>>D; //day
cin>>P; //political party
int h[105]; //各政黨罷會間隔天數
//input
for(int i=0; i<P; i++) cin>>h[i];

//check
int table[3655]={0},k; //calendar
for(int i=0; i<P; i++) { //從第一個政黨開始逐一處理
k=1;
for(int j=h[i];j<=D;j=h[i]*k) {
if(j%7!=6 && j%7!=0) //遇到每週六或七不計
table[j]=1;
k++;
}
}

//output
int cnt=0;
for(int i=1; i<=D; i++) {
if(table[i]==1)
cnt++;
}
cout<<cnt<<"\n";
}
return 0;
}
回到 CPE 必考一顆星 49 題選集