1011-大数加法

描述

 

求两个非负整数(1000位以内)的和。

输入

 

两个非负整数(1000位以内),以空格分隔。

输出

 

两个非负整数的和。

样例输入

111111111111 222222222222

样例输出

333333333333

#include <iostream>
#include <string>
using namespace std;
#define N 1001
int main()
{
    char a[N],b[N];
    int sum[N];
    for (int j=0;j<N;j++)
        sum[j]=0;
    int m1,m2,m3,m4;
    cin>>a;
    m1=strlen(a);
    cin>>b;
    m2=strlen(b);
    m3=m1<m2?m1:m2;
    m4=m1>m2?m1:m2;
    for (int i=0;i<m3;i++)
        sum[m4-i]=(a[m1-i-1]-'0')+(b[m2-i-1]-'0');
    if(m1>=m2)
    {
        for(int c=0;c<(m1-m2);c++)
            sum[c+1]=(a[c]-'0');
    }
    else 
        for(int d=0;d<(m2-m1);d++)
            sum[d+1]=(b[d]-'0');
    for (int e=N;e>=0;e--)
    {
        if (sum[e]>=10)
        {
            sum[e]%=10;
            sum[e-1]+=1;
        }
    }
    if(sum[0]!=0)
        for (int k=0;k<m4+1;k++) 
            cout<<sum[k];

    else
    for (int f=1;f<=m4;f++)
        cout<<sum[f];
    cout<<endl;
    return 0;
} 

  

原文地址:https://www.cnblogs.com/Rosanna/p/3436496.html