2131 - [数值问题]高精度加法

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB
高精度加法(highplus/c/cpp) 

【问题描述】 

输入两个高精度正整数a和b(a,b的位数<=200),求这两个数的和

【输入格式】

<span>输入共两行,分别为a和b</span> 

<span>【输出格式】</span> 

<span>输出共一行,表示两个数的和。</span> 

<span>【输入样例1】&nbsp;</span><br />

1111111111111111111111111111111111
9999999999999999999999999999999999

<br />

<span>【输出样例1】</span> 

11111111111111111111111111111111110

<span style="line-height:1.5;"></span> 

<br />

题目输入

题目输出

输入/输出样例

输入格式


                        

输出格式


                        

C++解答

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
  char a1[200],b1[200];
  int a[200],b[200],c[200],lena,lenb,lenc;
  memset(a,0,sizeof(a));
  memset(b,0,sizeof(b));
  memset(c,0,sizeof(c));
  gets(a1);
  gets(b1);
  lena=strlen(a1);
  lenb=strlen(b1);
  for (int i=0;i<=lena-1;i++) a[lena-i]=a1[i]-48;
  for (int i=0;i<=lenb-1;i++) b[lenb-i]=b1[i]-48;
  lenc=lena>lenb?lena:lenb;
  for (int i=0;i<lenc;i++){
  	c[i]=c[i]+a[i]+b[i];
  	c[i+1]=c[i+1]+c[i] / 10;
  	c[i]=c[i]% 10;
  }
  if (c[lenc]>0) lenc+=1;
  for (int i=lenc-1;i>=0;i--) cout <<c[i];
  cout<<endl;
  return 0;
  
}