2020年7月15日 星期三

10035 - Primary Arithmetic

解題思路:
用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;
}

沒有留言:

張貼留言