我们需要手动模拟人类在列竖式算加法的过程。
字丑请见谅。。。
我们可以看到,这个比较特(pu)殊(tong)的竖式中需要进许多位,这个后面再说(好没有顺序)。我们先观察用竖式计算的方法:
1. 从低位算起。所以我们在把这些字符存进 vector
时要倒叙存储。
2. 注意加法结果要模 $10$ 存下来,整十部分进位。
所以高精度有什么难的呢?其实就是模拟算法的应用。
所以最后结果一定要倒叙输出!!!
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
string a, b;
vector<int> A, B, C;
void add()
{
int t = 0; //专业处理进位。
for (int i = 0; i < A.size() || i < B.size(); i ++ )
{
if (i < A.size()) t += A[i];
if (i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if(t) C.push_back(t);
for (int i = C.size() - 1; i >= 0; i -- )
printf("%d", C[i]);
}
int main()
{
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');
add();
return 0;
}
想问下比较2个数组长短体现在哪一步
if (i < A.size()) t += A[i];
if (i < B.size()) t += B[i]; 这里解决了数组的长短问题
很不错哦,要继续加油呀~~~
谢谢大佬
这里有一只菜鸡想对你说:加油呀!
大佬!
加油!(ง •_•)ง 图文并茂的题解真的很棒!!
谢谢大佬!!!
加油啊!
谢谢大佬鼓励!
/se/se/se