这几天在学y总的算法基础课,学到了基础算法二,才知道原来之前做不出的高精度是这么做的,特此记录!
#include<bits/stdc++.h>
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;//十位用来进位
}
if(t>0)
{
C.push_back(t);//最后一个需要进位,再向后开辟一位
}
return C;
}
int main()
{
//定义两个长度可变的数组,用来存储每一位的数字
vector<int>A;
vector<int>B;
string a;
string b;
cin>>a;
cin>>b;
int i=0;
for(i=a.size()-1;i>=0;i--)//倒着输入方便更改
{
A.push_back(a[i]-'0');
}
for(i=b.size()-1;i>=0;i--)
{
B.push_back(b[i]-'0');
}
auto C=add(A,B);
for(i=C.size()-1;i>=0;i--)
{
printf("%d",C[i]);
}
system("pause");
return 0;
}