ZeroJudge A282: 認真念書

我最喜歡念書了!

2000頁的課本耶!

我下一頁應該要念哪一頁呢QQ

範例測資

範例輸入範例輸出
EOF 輸入,每組輸入一開始有一個數字 N (0 <= N <= 1000) 代表你以前看過幾頁 (可能重複)。
接下來 N 個 1~2000 的正整數代表你看過哪幾頁。
一個數字,代表你下一頁應該看哪一頁
也就是這本書裡面第一頁你沒看過的。
5
1 3 4 5 6
4
1 2 3 4
5
2 3 4 5 6
2
5
1

解題思路

因為題目有講 N 不會超過 1000 且頁數最多為 2000 頁,所以使用 For 迴圈從 1 跑到 2000 看有哪些頁數還沒讀到就直接輸出目前跑到的頁數然後 break 迴圈。可以使用 Map 來存取目前已經讀了哪些頁數,並使用 For 迴圈來判斷哪些頁數沒有被讀到來求答案。

範例程式碼-ZeroJudge A282: 認真念書

#include <iostream>
#include <map>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(nullptr);
    int N;
    while (cin >> N)
    {
        map<int, int>MAP;
        for (int i = 0; i<N; i++)
        {
            int tmp;
            cin >> tmp;
            MAP[tmp] = 1;
        }
        for (int i = 1; i<=2000; i++)
        {
            if (MAP[i] == 0)
            {
                cout << i << endl;
                break;
            }
        }
    }
}

//ZeroJudge A282
//Dr. SeanXD

發佈留言