题解 | 【模板】高精度加法
【模板】高精度加法
https://www.nowcoder.com/practice/c26e34baf994453eae63fe05d39009e3
原理
说白了就是模拟小学的竖式加法,注意好进位,把输入的数当成字符串就行啦
直接上代码吧,注释讲的很清楚,觉得不错的别忘了点个赞哦
#include <bits/stdc++.h>
using namespace std;
int main()
{
string A, B;
vector<int> ans(520, 0), a(520, 0), b(520, 0);
cin >> A;
cin >> B;
int len = max(A.size(), B.size());
for (int i = A.size() - 1, j = 1; i >= 0; i--, j++)
{
a[j] = A[i] - '0';//先把每一个数都存储起来
}
for (int i = B.size() - 1, j = 1; i >= 0; i--, j++)
{
b[j] = B[i] - '0';//也是先把每一个数都存储起来
}
for (int i = 1; i <= len; i++)
{
ans[i] += (a[i] + b[i]);//模拟进位,先看看同一位的数加起来是多少
ans[i + 1] += (ans[i]) / 10;//再看该进位多少
ans[i] %= 10;//最后是剩下的本位的数
}
if (ans[len + 1])
{
len++;//如果最后还有一位进位,别忘了加上awa
}
for (int i = len; i >= 1; i--)
{
cout << ans[i];
}
}


