高精度加法 两个大整数相加
相加思路:A+B
A=123456 B=789456;
先储存在vector[HTML_REMOVED]a,b中 倒着存
a[]=[6,5,4,3,2,1] b[]=[6,5,4,9,8,7]
方便有进位时 直接加在最后一位
t2=(a[i]+b[i]+t1)/10
c[i]=a[i]+b[i]+t1
if(t最后等于1)c末尾添加一位
样例
#include<iostream>
using namespace std;
#include<vector>
const int N=100010;
vector<int> add(vector<int> A,vector<int> B){
if(A.size()<B.size()) return add(B,A);
int t=0;
vector<int> C;
for(int i=0;i<A.size();i++)
{
t+=A[i];
if(i<B.size()) t+=B[i];
C.push_back(t%10);
t=t/10;
}
if(t) C.push_back(t);
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--) cout<<C[i];
cout<<endl;
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla