今天來解YKL13(UVA10929):You can say 11
要則麼確認是不是 11 的倍數
=>奇數位數字和與偶數位數字和的差為0或11的倍數
這題不能用int去解,所以我用了string
odd += N[i] - '0';
這裡不能用int()
因為int()是將字元轉換為對應的ASCII值,而不是數字。
ex: '1' => 49
解決方法就是用N[i] - '0'
'1' - '0' = 49 - 48 = 1
'2' - '0' = 50 - 48 = 2
'3' - '0' = 51 - 48 = 3
#include <bits/stdc++.h>
using namespace std;
int main(){
string N;
while(cin >> N){
int odd=0;
int even=0;
if(N == "0"){
continue;
}
for(int i=0;i<N.size();i++){
if(i%2==1){
odd += N[i] - '0';
}else{
even += N[i] - '0';
}
}
int results = abs(odd - even);
if(results%11==0){
cout << N << " is a multiple of 11." << endl;
}else{
cout << N << " is not a multiple of 11." << endl;
}
}
return 0;
}