題目簡述:輸入 a、b,模擬 a + b 直式加法的過程,計算共進位幾次。
題目 / ZJ
陷阱:a 和 b 的位數不一定相同。
解法:是 while(a != 0 || b != 0) 而不是 while(a != 0)。
註解:變數 r 是 9+3=12 的那個 1。
#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(0), cin.tie(0);
int a, b;
while(cin >> a >> b){
if(a==0 && b==0) break;
int ans = 0, r = 0;
while(a != 0 || b != 0){
if(a%10 + b%10 + r > 9){
ans++;
r = (a%10 + b%10 + r)/10;
}else{
r = 0;
}
a/=10, b/=10;
}
if(ans == 0) cout << "No carry operation.\n";
else if(ans == 1) cout << ans << " carry operation.\n";
else cout << ans << " carry operations.\n";
}
}
👉 回到:【CPE大學程式能力檢定】目錄