> 文档中心 > 高精度加法

高精度加法

【问题描述】
求两个不超过200位的非负整数的和。

【输入数据】
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

【输出要求】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

【输入样例】

2222222222222222222233333333333333333333

【输出样例】

55555555555555555555

code

#include#includeusing namespace std;int main(){  char a1[201],b1[201];  int a[210],b[210],c[210],lena,lenb,lenc,i,x;  memset(a,0,sizeof(a));  memset(b,0,sizeof(b));  memset(c,0,sizeof(c));  cin>>a1;  cin>>b1;  lena=strlen(a1);  lenb=strlen(b1);  for(i=0;i<=lena-1;i++)    a[i]=a1[lena-i-1]-48;  for(i=0;i<=lenb-1;i++)    b[i]=b1[lenb-i-1]-48;lenc=lena>lenb?lena:lenb;  x=0;  for(i=0;i<=lenc-1;i++)  {  c[i]=a[i]+b[i]+x;  x=c[i]/10;  c[i]=c[i]%10;  }  if(x!=0)  {  c[lenc]+=x;  lenc++;  }  for(i=lenc-1;i>=0;i--)    cout<<c[i];  cout<<endl;  return 0;    }

在这里插入图片描述

天天赞天天看!!!