利用vector重新练习高精度加法 P1601 A+B Problem(高精)

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值