C++ 高精度加法
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
高精度加法
输入格式
两行,表示两个非负整数a、b。
输出格式
一行表示a+b的值。
样例输入
112233445566778899
998877665544332211
样例输出
1111111111111111110
代码如下
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string str1,str2;
int main(){
cin>>str1>>str2;
int l1=str1.length();
int l2=str2.length();
int a[1002]={0};
int b[1002]={0};
int c[2000]={0};
for(int i=0;i<l1;i++) a[i]=str1[l1-i-1]-'0';
for(int i=0;i<l2;i++) b[i]=str2[l2-i-1]-'0';
int l=max(l1,l2);
for(int i=0;i<l;i++) c[i]=a[i]+b[i];
for(int i=0;i<l;i++){
if(i!=l-1){
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
else{
if(c[i]>9){
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
l++;
}
}
}
for(int i=0;i<l;i++) cout<<c[l-i-1];
return 0;
}