#include<bits/stdc++.h>
using namespace std;
string a,b;
int main(){
cin>>a>>b;//字符串型高精度加数a,b
vector<int> va,vb,vc;//用来保存翻转后的int型高精度加数va(加数a) vb(加数b) vc(和)
int la=a.size(),lb=b.size();//两个加数的长度
//翻转:目的将各个位对齐
for(int i=la-1;i>=0;i--) va.push_back( a[i]-'0' ); //876……
for(int i=lb-1;i>=0;i--) vb.push_back( b[i]-'0' );
int len=max(la,lb);
for(int i=0,t=0;i<len||t!=0;i++){ //t!=0 最后存在进位,也可以将进位放入到vc中
if(i<la) t+=va[i];//如果加数va在第i位还有数字,加到临时和 t
if(i<lb) t+=vb[i];//如果加数vb在第i位还有数字,加到临时和 t
vc.push_back(t%10);//将临时和t的个位留在第i位
t=t/10;//保存新的进位,为下一次循环做好准备
}
for(int i=vc.size()-1;i>=0;i--) cout<<vc[i];
return 0;
}
利用vector重新练习高精度加法 P1601 A+B Problem(高精)
最新推荐文章于 2025-12-16 21:19:17 发布
612

被折叠的 条评论
为什么被折叠?



