ZeroJudge D235: You can say 11

同題:UVa 10929 – You can say 11

你的任務是,給你一個正整數 N,判定它是否是 11 的倍數

範例測資

範例輸入範例輸出
EOF 輸入,每列資料有一個正整數 N,N 最大可能到 1000 位數。
若 N = 0 代表輸入結束。
對每個輸入的數,輸出是否為 11 的倍數。輸出格式請參考 Sample Output。
112233
30800
2937
323455693
5038297
112234
0
112233 is a multiple of 11.
30800 is a multiple of 11.
2937 is a multiple of 11.
323455693 is a multiple of 11.
5038297 is a multiple of 11.
112234 is not a multiple of 11.

解題思路

本題的數字會超過 Long Long Int 的範圍,所以要使用字串的方式將N收進來

可以使用以下公式來判斷 N 是否為11的倍數:如果奇數位數的數字和與偶數位數的數字和的差是11的倍數的會N即為11的倍數。可以使用 For迴圈 將每一個位數的數字都做相加並在 For迴圈 結束後進行判斷。

範例程式碼-ZeroJudge D235: You can say 11

#include <iostream>
using namespace std;

int main() {
    string str;
    while (cin >> str && str != "0")
    {
        int odd = 0, even = 0;
        for (int i = 0; i<str.length(); i++)
        {
            if (i % 2 == 0) even += int(str[i] - '0');
            else odd += int(str[i] - '0');
        }
        if ((odd - even) % 11 == 0) cout << str << " is a multiple of 11.\n";
        else cout << str << " is not a multiple of 11.\n";
    }
}

//ZeroJudge D235
//Dr. SeanXD

發佈留言