一、什么时候需要高精度加法
再遇到这样一组数时,我们需要用到高精度加法(111111111111111111111111111111+111111111111111111111111111111=222222222222222222222222222222)
二、高精度加法的实现步骤
首先将输入的两个字符串(因为这样能够存储大整数)分别转换为数字数组,然后从数组的末尾开始逐位相加,同时记录进位的值。最后得到的结果即为两个数字的高精度加法结果。
三、算法实现
#include <bits/stdc++.h>
using namespace std;
vector<int> add(vector<int>& A, vector<int>& B)
{
if(A.size() < B.size()) return add(B, A);
vector<int> C;
int t = 0;
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);
return C;
}
int main()
{
vector<int> A, B, N;
string a, b;
cin >> a >> b;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i] - '0');
for(int i=b.size()-1;i>=0;i--) B.push_back(b[i] - '0');
N = add(A, B);
for(int i=N.size()-1;i>=0;i--) cout << N[i];
return 0;
}