- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
/*
高精度加法
案例
129
+ 12
-------
141
*/
using namespace std;
vector<int> add(vector<int> &A, vector<int> &B)
{
vector<int> c; //定义int型vector容器,存储数字位
int t = 0;
//如果i小于A字符串的长度,或者B的长度,执行下列循环
for(int i = 0;i < A.size() || i < B.size();i++){
if(i < A.size()) t+=A[i]; // 如i = 0的时候,t = 9
if(i < B.size()) t+= B[i];// i = 0 的时候 ,t = 9 + 2 = 11
c.push_back(t%10); //把个位存储到c容器中
t /= 10; //如果t>10,那么这样就可以求到进位1,加入到第二次计算中
}
if(t) c.push_back(1);//如果有剩余进位,那么把它加入到c容器中
return c;//返回C容器
}
int main(void)
{
string a, b;
vector<int> A, B;
cin >> a >> b;
for (int i = a.size() - 1; i >= 0; i--)
A.push_back(a[i] - '0'); //字符'number' - '0' 等于 int number
for (int i = b.size() - 1; i >= 0; i--)
B.push_back(b[i] - '0');
vector<int> c = add(A, B);
for (int i = c.size() - 1; i >= 0; i--)
cout << c[i];
}