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