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

问题描述

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

AC代码

#include <iostream>
#include <cstdio>
#include <cstring>
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;j<ma;j++)
    {
        cout<<ans[j];
    }
return 0;

}
    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/Liukairui/article/details/78946338
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞