【題解】CPE一顆星選集第3題:10035 – Primary Arithmetic

題目簡述:輸入 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大學程式能力檢定】目錄
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *