2937 - 高精加法

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

输入两个正整数,求它们的和。

题目输入

两行:

第一行:第一个加数,长度不超过250位

第二行:第二个加数,长度不超过250位

题目输出

一行:一个正整数,代表两个加数的和

输入/输出样例

输入格式

11111111111111111111111111111
22222222222222222222222222222

输出格式

33333333333333333333333333333

C++解答

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main ()
{
 char a1[10001],b1[10001];
 int a[10000],b[10000],c[10000],l1,l2,l,i,m;
 memset(a,0,sizeof(a));
 memset(b,0,sizeof(b));
 memset(c,0,sizeof(c));
 cin.getline(a1,10000);cin.getline(b1,10000);
 l1=strlen(a1);l2=strlen(b1);
 for (i=0;i<=l1-1;++i)
  a[l1-i]=a1[i]-48;
 for (i=0;i<=l2-1;++i)
  b[l2-i]=b1[i]-48;
 l=1;m=0;
 while ((l<=l1)||(l<=l2))
  {
   c[l]=a[l]+b[l]+m;
   m=c[l]/10;
   c[l]%=10;
   l++;
  }
 c[l]=m;
 if (c[l]==0) l=l-1;
 for (i=l;i>=1;i--)
  cout<<c[i];
 return 0;
}