ZeroJudge A518: Zapping

同題:UVa 12468 – Zapping

我是個超級電視迷,但是我不喜歡固定看一個頻道,我經常在不同頻道間轉來轉去。

我的狗咬壞了我的遥控器,現在數字鍵都不能用了,只剩兩個按鈕可以換頻道,一個往上切一個頻道 (△ 按鈕),一個往下切一個頻道 (▽ 按鈕)。這樣真的很煩,因為如果我要從頻道 3 換到頻道 9 我得按 6 次 △ 按鈕。

我的電視有 100 個頻道,號碼為 0 到 99。它們是循環的,也就是從 99 台再按一下 △ 就會回到第 0 台。同理,從第 0 台按一下 ▽ 就會回到 99 台。

幫我寫個程式,讓我輸入現在正在看的頻道和我要切過去的頻道,它便告訴我最少需要按幾次按鈕。

範例測資

範例輸入範例輸出
EOF 輸入,含有多筆測資 (最多 200 筆)。
每筆測資有一行,有兩個整數 a 與 b 。a 是現在看的頻道而 b 則是要切過去的頻道 (0 ≤ a, b ≤ 99)。
最後一行有兩個 -1,請不要處理。
對於每筆測資,輸出一個整數於一行,也就是最少要按幾次按鈕才能切到新頻道。(記住,我只有 △ 和 ▽ 兩個按鈕可用)。
3 9
0 99
12 27
-1 -1
6
1
15

解題思路

加 1 減 1 的值都算出來並比較哪邊比較小並輸出較小的值。

範例程式碼-ZeroJudge A518: Zapping

#include <iostream>
using namespace std;

int main() {
    int a, b;
    while (cin >> a >> b)
    {
        if (a == -1 && b == -1) break;
        else
        {
            if (a > b) swap(a, b);
            int one = b - a;
            int two = a - b + 100;
            cout << min(one, two) << endl;
        }
    }
}

//ZeroJudge A518
//Dr. SeanXD

發佈留言