CPE 一顆星選集 49 道必考題
題目連結:https://zerojudge.tw/ShowProblem?problemid=d097
內容
給定一長度為 n (n < 3000)之數列,若相鄰兩數之差的絕對值在 1 ~ n-1 皆有(不用照順序),則輸出 Jolly,若否輸出 Not jolly。
第一個整數為 n ,接著為此數列。
範例輸入
4 1 4 2 3
5 1 4 2 -1 6
範例輸出
Jolly
Not jolly
想法
將相鄰兩數之差當陣列索引值紀錄下來,接著從 1 開始遍歷此陣列。
程式碼
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
| #include <bits/stdc++.h> #define fastio ios_base::sync_with_stdio(false), cin.tie(nullptr) using namespace std;
int main(){ fastio; int n, mp[3000]; int temp; bool vis[3000], suc; while(cin >> n){ memset(vis, 0, sizeof(vis)); for(int i = 0; i < n; ++i) cin >> mp[i]; for(int i = 1; i < n; ++i){ temp = abs(mp[i] - mp[i - 1]); vis[temp] = true; } suc = true; for(int i = 1; i < n; ++i){ if(!vis[i]){ suc = false; break; } } if(suc) cout << "Jolly\n"; else cout << "Not jolly\n"; } }
|