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;

} 

  

你可能感兴趣的:(1011-大数加法)