原题链接:
791. 高精度加法 - AcWing题库https://www.acwing.com/problem/content/793/个人思路:
首先进行大数据的读入,这里使用vector进行操作,大佬的用法
string a, b;
vector 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的容器,过十向下一位进一
vectoradd(vector &A, vector &B) { if (A.size() < B.size()) return add(B, A); vector 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即可;



