大整数加法

题目描述:

求两个不超过200位的非负整数的和。

输入格式:

有两行,每行是一个不超过200位的非负整数。

输出格式:

一行,即相加后的结果。

样例输入:

22222222222222222222
33333333333333333333

样例输出:

55555555555555555555
#include <bits/stdc++.h>
using namespace std;
char a[1000],b[1000];
int a1[1000],b1[1000],c[1000];
int main()
{
    cin>>a>>b;
    int lena=strlen(a),lenb=strlen(b);
    for(int i=lena-1;i>=0;i--)
        a1[lena-1-i]=a[i]-'0';
    for(int i=lenb-1;i>=0;i--)
        b1[lenb-1-i]=b[i]-'0';
    int m=max(lena,lenb);
    for(int i=0;i<m;i++)
    {
        c[i]+=a1[i]+b1[i];
        c[i+1]+=c[i]/10;
        c[i]%=10;
    }
    while(c[m]==0 && m>=1) m--;//去前导0
    for(int i=m;i>=0;i--) cout<<c[i];
    return 0;
}

 

posted @ 2020-02-03 11:38  傅YF  阅读(234)  评论(0)    收藏  举报