原题链接:
791. 高精度加法 - AcWing题库
https://www.acwing.com/problem/content/793/个人思路:
首先进行大数据的读入,这里使用vector进行操作,大佬的用法
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');
for (int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');
用此串代码即可读入,实质上是读入char类型的数组再进行转换类型后倒序存入了容器
首先判断a,b的为数关系,再进行加法
之后只需按照从 0 开始遍历来进行加法,存入新的c的容器,过十向下一位进一
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;//这里的t即是进位
}
if (t) C.push_back(t);
return C;
}
然后进行对c的输出即可,注意是倒序
for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
此时加法就完成了
若题目要求进行压位(即输出后几位数字),只需把代码中的10,改成对应的1eN即可;
本文详细介绍了如何利用vector容器实现大数据的高精度加法运算。通过对比输入数据长度,采取逐位相加并考虑进位的方式完成计算。最后,文章还提供了输出结果的倒序打印方法。
4664

被折叠的 条评论
为什么被折叠?



