SDNU 1303 高精度(A+B)

Description

求A+B

Input
多组测试样例。两个正整数X,Y(0≤X,Y≤10^100)

Output
输出结果
Sample Input

1 1
12345 54321

Sample Output

2
66666

思路: 先用字符数组存起来,在将其转化为整形数组,当两个数相加之和大于等于10时,向前进一位,然后再对自己取余,和加法的打草的计算方法一样。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string m,n;
    while (cin >> m >> n)
    {
        int p,a[1005],b[1005];
        int i,t,x,y,len,j=0,q;
        for(t=0; t<1005; t++)
        {
            a[t]=0;
            b[t]=0;
        }
        for(i=n.size()-1; i>=0; i--)
            a[j++]=n[i]-'0';
        j=0;
        for(i=m.size()-1; i>=0; i--)
            b[j++]=m[i]-'0';
        len=max(n.size(),m.size());
        for(i=0; i<len; i++)
        {
            a[i]+=b[i];
            a[i+1]+=a[i]/10;
            a[i]%=10;
        }
        for(i=1004; i>=0; i--)
        {
            if(a[i]!=0)
            {
                q=i;
                break;
            }
        }
        for(i=q; i>=0; i--)
            cout<<a[i];
        cout<<endl;
    }
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章