#include <bits/stdc++.h>
using namespace std;
string s1,s2;//高精度整数
int a[250],b[250],c[500];
int i,j,len;
int main(){
//用string读入高精度整数
cin>>s1>>s2;
//将两个高精度数逆序放入ab两个整数数组中
for(i=0;i<s1.size();i++){
a[i] = s1[s1.size()-1-i] - '0';
}
for(i=0;i<s2.size();i++){
b[i] = s2[s2.size()-1-i] - '0';
}
//从左往右,逐位求和,结果存入c数组
//加法的次数取决于两个整数中较长的字符串
len = s1.size();
if(s2.size()>s1.size()){
len = s2.size();
}
//逐位相加
for(i=0;i<len;i++){
c[i] = a[i]+b[i];
}
//逐位进位
for(i=0;i<len;i++){
if(c[i]>=10){
c[i+1] = c[i+1] + c[i] / 10;
c[i] = c[i] % 10;
}
}
//逆序输出结果
//两个不超过len位的整数做加法,结果可能是len+1位
if(c[len]!=0){
len++;
}
for(i=len-1;i>=0;i--){
cout<<c[i];
}
return 0;
}
东方博宜 1268 高精度加法
最新推荐文章于 2024-06-29 17:39:53 发布