- C++
高精度加法模板
- 2023-12-2 17:24:56 @
#include <iostream>
#include <vector>
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()
{
string a, b;//定义两个字符串
vector<int> A, B;//定义两个可变长度的整数数组A、B
cin >> a >> b;
// "12345678998765432112345"
// "123456789987654321123456789"
for (int i = a.size() - 1; i >= 0; i -- )//a.size=>23
A.push_back(a[i] - '0');
//第一次循环,i=22,a[22]--'5','5'-'0'=5,a[0]---5
//第二次循环,i=21,a[21]--'4','4'-'0'=4,a[1]---4
//....
//第23次循环,i=0,a[0]--'1','1'-'0'=1,a[22]---1
for (int i = b.size() - 1; i >= 0; i -- )
B.push_back(b[i] - '0');
auto C = add(A, B);
for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
cout << endl;
return 0;
}
1 条评论
-
xinao005 LV 5 @ 2023-12-2 17:25:27
6
- 1