目录
一:高精度加法的意义
二:题目描述
三:算法思路
四:代码模板
一:高精度加法的意义
答:高精度加法适用于数位很多的数字的加法,比如两个数字a和b,len(a)= 100,说明a有一百位,显然int和long long int都无法存储这么大的数据,这时候这需要高精度加法来实现对两个数字的相加。
注:python和java内部有高精度加法的库函数,所以不需要实现,但是c++没有,需要手动实现
二:题目描述
答:高精度加法适用于数位很多的数字的加法,比如两个数字a和b,len(a)= 100,说明a有一百位,显然int和long long int都无法存储这么大的数据,这时候这需要高精度加法来实现对两个数字的相加。
注:python和java内部有高精度加法的库函数,所以不需要实现,但是c++没有,需要手动实现
三:算法思路
1.以字符串的形式读入a,b
2.用vector的两个数组A,B分别存储a,b从个位开始的数字,比如A【0】存储的是a的个位,A【1】存储a的十位,以此类推
3.用t来存储进位
4.如果最后t不是0,说明还要进1
四:代码模板
#include
#include
using namespace std;
vector add(vector&A,vector&B)
{
int t = 0;
vectorC;//存储答案
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) C.push_back(1);
return C;
}
int main(){
string a,b;
vector 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 --)printf("%d",C[i]);
}
1.以字符串的形式读入a,b
2.用vector的两个数组A,B分别存储a,b从个位开始的数字,比如A【0】存储的是a的个位,A【1】存储a的十位,以此类推
3.用t来存储进位
4.如果最后t不是0,说明还要进1
#include#include using namespace std; vector add(vector &A,vector &B) { int t = 0; vector C;//存储答案 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) C.push_back(1); return C; } int main(){ string a,b; vector 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 --)printf("%d",C[i]); }



