计蒜客习题:A+B问题(大整数类)


问题描述

计算两个非负整数A,B的和。不过这一次有些特殊A,B可能会很大。
输入格式
第一行输入一个非负整数A。
第二行输入一个非负整数B。
A,B的长度不大于 500。
输出格式
输出A+B的值。不要有多余的前导零。
样例输入
123
1234
样例输出
1357


AC代码

#include 
#include 
#include 
using namespace std;
int main()
{   int m=0;
    int n=0;
    int u=0;
    int a[600];
    int b[600];
    int ans[600];
    memset(b,0,sizeof(b));
    memset(a,0,sizeof(a));
    memset(ans,0,sizeof(a));
    for(;;)
    {
        char q;
        scanf("%c",&q);
        if(q==10)break;
        a[m]=(int)q-'0';
        m++;
    }
    for(;;)
    {
        char q;
        scanf("%c",&q);
        if(q==10)break;
        b[n]=(int)q-'0';
        n++;
    }

    int ma=max(m,n);
    for(int cur=ma;cur>=0;cur--)
    {   //if((m<=-1)||(n<=-1))break;
        if(n>=0)ans[cur]+=b[n--];
        if(m>=0)ans[cur]+=a[m--];
        if(ans[cur]>=10){
        ans[cur]=ans[cur]%10;
        if(cur==0)u=1;
        else ans[cur-1]++;
        }
    }
    if(u==1)cout<<"1";
    for(int j=0;jcout<return 0;

}

你可能感兴趣的:(+刷题,#,暴力法,计蒜客NOIP习题)