d235: 10929 - You can say 11

  1. 1. 內容
  2. 2. 範例輸入
  3. 3. 範例輸出
  4. 4. 想法
  5. 5. 程式碼

CPE 一顆星選集 49 道必考題

題目連結:https://zerojudge.tw/ShowProblem?problemid=d235

內容

給定一個正整數 N (可能很大),判斷是否為11的倍數。

輸入 0 代表結束。

範例輸入

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.

想法

用 string 讀取,因為輸入可能超出 long long 範圍。

若奇數項和偶數項之差為11倍數,則此數為11的倍數。

程式碼

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(false), cin.tie(nullptr)
using namespace std;

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