高精度加减法就是模拟人类的列竖式
因为有进位所以为了方便我们倒序,这里就可以使用vector来进行存储了
#include<iostream>
#include<vector>
using namespace std;
vector<int> a,b;
string sa,***;
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++)
{
if(i<a.size())t+=a[i];
if(i<b.size())t+=b[i];
c.push_back(t%10);//害怕有进位
t/=10;//考虑到进位,所以t/10
}
if(t)//如果最后一次有进位,就放入
c.push_back(t);
return c;
}
int main()
{
cin>>sa>>***;
for(int i=sa.size()-1;i>=0;i--)
a.push_back(sa[i]-'0');
for(int i=***.size()-1;i>=0;i--)
b.push_back(***[i]-'0');
auto c=add(a,b);
for(int i=c.size()-1;i>=0;i--)cout<<c[i];
return 0;
}