d123: 11063 - B2-Sequence

  1. 1. 內容
  2. 2. 範例輸入
  3. 3. 範例輸出
  4. 4. 想法
  5. 5. 程式碼

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 的值當陣列索引值判斷此數是否存在。

程式碼

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