TJ
2024-08-17 14:11:53
发布于:广东
4阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
//以string的形式返回高精度
string fun(string a, string b){
int la = a.size(), lb = b.size();
int l = max(la, lb);//取位数最多的
//1、为了数位对对齐,逆序存储并转整数
vector<int> A(l+10), B(l+10), C(l+10);
for (int i=0;i<la;i++) A[i] = a[la-i-1]-'0';
for (int i=0;i<lb;i++) B[i] = b[lb-i-1]-'0';
//2、逐位相加
for (int i=0;i<l;i++){
C[i] += A[i] + B[i];//要加上之前的进位,是+=
if (C[i]>=10){//要进位
C[i+1]++;//高位进1
C[i]-=10;//低位减1
}
}
//3、把结果在逆序转成字符串
string res = "";
if (C[l]>0) res += '1';//判断最高位是否有进位
for (int i=l-1;i>=0;i--){
res += C[i] + '0';
}
return res;
}
int main(){
string a, b;
cin >> a >> b;
cout << fun(a, b);
return 0;
}
这里空空如也
有帮助,赞一个