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