今日学习:高精度加法
注意事项
-
输入时一定要倒序存储
-
倒序加法
-
用向量(Vector)省内存
-
vector内置函数:
v.push_back();//向容器的末尾插入
v.pop_back();//删除末尾对象
v.size();//获取容器内对象个数
v.back();//返回容器的尾迭代器
-
模板
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<int> A,B;//两数
vector<int> bigintplus(vector<int> &a,vector<int> &b)
{
if (a.size()<b.size())
{
return bigintplus(b,a);
}
vector<int> c;
int t=0;
for (int i=0;i<a.size();i++)
{
t+=a[i];
if (b.size()>i)
{
t+=b[i];
}//加法
c.push_back(t%10);//加上
t/=10;//进位
}
if (t!=0)
{
c.push_back(t);
}//最后的进位
while (c.size()>1&&c.back()==0)
{
c.pop_back();
}//去除前导0
return c;//返回答案
}
int main() {
string a,b;
cin>>a>>b;
for (int i=a.size()-1;i>=0;i--)
{
A.push_back(a[i]-'0');//A数输入
}
for (int i=b.size()-1;i>=0;i--)
{
B.push_back(b[i]-'0');//B数输入
}
vector<int> C=bigintplus(A,B);//相加
for (int i=C.size()-1;i>=0;i--)//输出
{
cout<<C[i];
}
return 0;
}