CPE 一顆星選集 49 道必考題
題目連結:https://zerojudge.tw/ShowProblem?problemid=d123
內容
所謂「B2數列」係指一正整數數列 1<= b1 < b2 < b3 …,其中所有的 bi + bj (i <= j)皆不相等。
判斷某一數列是否為「B2數列」。
第一列 N (2 <= N <= 100)代表數列長度。
範例輸入
4
1 2 4 8
4
3 7 10 14
5
13 14 15 16 17
範例輸出
Case #1: It is a B2-Sequence.
Case #2: It is not a B2-Sequence.
Case #3: It is not a B2-Sequence.
想法
將 bi + bj 的值當陣列索引值判斷此數是否存在。
程式碼
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
| #include <bits/stdc++.h> #define fastio ios_base::sync_with_stdio(false), cin.tie(nullptr) using namespace std;
int main(){ fastio; int N, mp[101], temp, c = 0; bool vis[30000], suc; while(cin >> N){ memset(vis, 0, sizeof(vis)); suc = true; for(int i = 0; i < N; ++i){ cin >> mp[i]; } for(int i = 0; i < N; ++i){ for(int j = i; j < N; ++j){ temp = mp[i]+mp[j]; if(vis[temp]){ suc = false; break; } vis[temp] = true; } if(!suc) break; } cout << "Case #" << ++c << ": "; if(suc) cout << "It is a B2-Sequence.\n\n"; else cout << "It is not a B2-Sequence.\n\n"; } return 0; }
|