用string解這題。
用較小數+較大數,先把較小數直接加上較大數,計算出進位次數。
然後再把該數字從頭到尾再檢查過一次要不要進位。
最後就是判斷輸出格式。
程式碼:
#include <iostream> #include <string> using namespace std; int main() { string a,b; while(cin>>a>>b) { if(a=="0"&&b=="0") break; int operation = 0; if(a.size()>b.size()) swap(a,b); for(int i=0;i<a.size();i++) { b[b.size()-i-1]=b[b.size()-i-1]+a[a.size()-i-1]-'0'; if(b[b.size()-i-1]>'9') { b[b.size()-i-1]=(b[b.size()-i-1]-'0')%10+'0'; b[b.size()-i-2]++; operation++; } } for(int i=b.size()-1;i>=0;i--) { if(b[i]>'9') { b[i]=(b[i]-'0')%10+'0'; b[i-1]++; operation++; } } if(operation==0) cout<<"No carry operation."<<endl; else if(operation==1) cout<<"1 carry operation."<<endl; else cout<<operation<<" carry operations."<<endl; } return 0; }
沒有留言:
張貼留言