题目描述
高精度加法
样例
#include<iostream>
#include<vector> //其中自带了size()函数,即不用给数字长度分配空间
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+=A[i];
if(i<B.size())t+=B[i];
C.push_back(t%10); //进位后的余数
t/=10; //判断进位是否大于1
}
if(t)C.push_back(1); //进位大于1,则再进一位
return C;
}
int main()
{
string a,b; //高精度,即数字len很大,或值很大,用string
cin>>a>>b;
vector<int> A,B; //创两个数组
//将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--)
cout<<C[i];
return 0;
}