题目
- 高精度加法
思路
将a,b放入容器A,B中,注意手动模拟加法运算时,要把数字倒着加,因为如果最高位有进位的话更方便扩展,所以在存入A,B中时从a和b的最后面开始遍历。放入A,B后开始实现加法,两位相加并且还要加上进位t,在最后判断最高位有无进位。最后输出时倒着输出,因为之间把位数颠倒了,输出时再换回来。
代码
#include<iostream>
#include<vector>
using namespace std;
vector<int> add(vector<int> &A, vector<int> &B)
{
vector<int>c;
int t = 0;
for (int i = 0;i < A.size() || i < B.size();i++)
{
if(i<A.size())
t = t + A[i];
if (i< B.size())
t = t + B[i];
c.push_back(t % 10);
t = t / 10;
}
if (t == 1)
c.push_back(1);
return c;
}
int main()
{
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');
auto c = add(A, B);
for (int i = c.size()-1;i >= 0;i--)
printf("%d", c[i]);
return 0;
}

431

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



