# 題目 * 在小學時我們都做過加法的運算,就是把2個整數靠右對齊然後,由右至左一位一位相加。如果相加的結果大於等於10就有進位(carry)的情況出現。你的任務就是要判斷2個整數相加時產生了幾次進位的情況。這將幫助小學老師分析加法題目的難度。 # Code ```C++=1 #include <iostream> #include <string> #include <sstream> using ss=std::string; class __Problem{ private: void __Synclength(ss& a, ss& b) { int as=a.size(), bs=b.size(); if(as!=bs) if(as>bs) b=ss((as-bs),'0')+b; else a=ss((bs-as),'0')+a; // std::cout<<a<<" "<<b<<"\n"; } int counter(ss s) { std::stringstream sin(s); int add=0, carry=0; ss a, b; sin>>a>>b; __Synclength(a,b); for(int i=a.size()-1;i>=0;--i) { int j=carry+(a[i]-'0')+(b[i]-'0'); carry=j/10; if(carry)add++; } return add; } public: void answer(ss s) { int Cnt=counter(s); if(Cnt) if(Cnt>1)std::cout<<Cnt<<" carry operations.\n"; else std::cout<<"1 carry operation.\n"; else std::cout<<"No carry operation.\n"; } }Arithmetic; int main() { ss s; while(getline(std::cin,s)){ if(s=="0 0")break; Arithmetic.answer(s); } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up