【題解】ZeroJudge d235: 10929 – You can say 11

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=d235
【解題想法】

  • 輸入的數字最大可能到 1000 位數,需以字串形式讀入。
  • 如果一個數字是 11 的倍數,其「奇數位數的數字和」與「偶數位數的數字和」的差也是 11 的倍數。
#include <iostream>
using namespace std;
 
int main() {
    string s;
    while (cin >> s) {
        if (s == "0") break;
        int odd = 0, even = 0;
        for (int i = 0; i < s.size(); i++) {
            if (i % 2) {
                odd += s[i] - '0';
            } else {
                even += s[i] - '0';
            }
        }
        if ((odd - even) % 11 == 0) {
            cout << s << " is a multiple of 11.\n";
        } else {
            cout << s << " is not a multiple of 11.\n";
        }
    }
    return 0;
}

Python code (credit: Amy Chou)

while True:
    s = input()
    if s == "0":
        break
    
    even = 0
    odd = 0
    for i in range(0, len(s), 2):
        even += ord(s[i]) - 48
    for i in range(1, len(s), 2):
        odd += ord(s[i]) - 48

    if abs(odd - even) % 11 == 0:
        print(f"{s} is a multiple of 11.")
    else:
        print(f"{s} is not a multiple of 11.")
分享本文 Share with friends