高精度计算-加法
#include <iostream>
#include <algorithm>
using namespace std;
int a[1000]={0},b[1000]={0};
//字符串反向转成数组
void init(string s,int a[]){
//我们把字符串的长度,也就是数字的位数,存在a[0]
a[0]=s.length();
//字符串反向转成数组
for(int i=1;i<=a[0];i++){
a[i]=s[a[0]-i]-'0';
}
}
//逐位相加,并且进位
void add(int a[],int b[]){
//确定a数组和b数组位数的最大值,这样逐位相加做循环的时候好做
a[0]=max(a[0],b[0]);
//逐位相加
for(int i=1;i<=a[0];i++){
a[i]+=b[i];
}
//处理进位
for(int i=1;i<=a[0];i++){
if(a[i]/10) a[i+1]+=a[i]/10;
a[i]%=10;
}
//最高位进位的话,要将数字的长度加1
if(a[a[0]+1]) a[0]++;
}
//反向输出数组
void print(int a[]){
for(int i=a[0];i>=1;i--){
cout<<a[i];
}
cout<<endl;
}
int main(){
string sa,sb;
cin>>sa;
cin>>sb;
init(sa,a);
init(sb,b);
add(a,b);
print(a);
return 0;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容