题目背景

题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

输入输出样例

输入样例#1:
1
1
输出样例#1:
2

附上代码:
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>//不要问我为什么这么多头文件 闲的
    using namespace std;
    char a1[1000],b1[1000];
    int a[1000],b[1000],c[1000];
    int main()
    {
        scanf("%s",a1);scanf("%s",b1);//scanf就爆0!
        if(a1[0]==48&&b1[0]==48)
        {
            cout<<"0"<<endl;
            return 0;
        }
        int lena=strlen(a1),lenb=strlen(b1);
        for(int i=0;i<lena;i++)
        {
            a[lena-i-1]=int(a1[i]-48);
        }
        for(int i=0;i<lenb;i++)
        {
            b[lenb-i-1]=int(b1[i]-48);//倒序输入便于进位
        }
        int m=max(lena,lenb);
        for(int i=0;i<m;i++)
        {
            c[i]+=a[i]+b[i];//不能直接赋值,要加上前面的进位
            while(c[i]>=10)
            {
                c[i+1]++;
                c[i]-=10;
            }
        }
        m++;
        while(c[m]==0)    m--; //删除前导0
        for(int i=m;i>=0;i--)
            cout<<c[i];
        cout<<endl;
        return 0;
}

还是比较简单明了的。