//高精度加法
#include <bits/stdc++.h>
using namespace std;
vector<int> add(vector<int> &A, vector<int> &B) {
//默认A.size大于B.size
if(A.size() < B.size()) return add(B,A);
int t = 0;//进位标志位
vector<int> C;//存取和
for(int i = 0; i < A.size(); i++){
t += A[i];
if(i < B.size()){
t += B[i];
}
C.push_back(t % 10);
t /= 10;
}
if(t){
C.push_back(t);//将A多的部分放入数组中
}
return C;
}
int main(){
//字符形式存储
string a, b;
cin >> a >> b;
//将数字反转 权重低的位数在前
vector<int> x, y;
for(int i = a.size() - 1; i >= 0; i--){
x.push_back(a[i] - '0');
}
for(int i = b.size() - 1; i >= 0; i--){
y.push_back(b[i] - '0');
}
vector<int> ans = add(x,y);
//输出
for(int i = ans.size() - 1; i >= 0; i--){
cout << ans[i];
}
return 0;
}
模拟和高精度
最新推荐文章于 2024-11-18 18:10:05 发布