【題目敘述】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.")