【c++】大整数加法模板

思路:

大整数加法,采用字符串存储数据,只需模拟手工运算即可,需要注意的是两个加数得长度对其,不然不利于计算。不足补0。

样例输入:

1+2

33+5

样例输出:

3

38

代码:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void solve(string a,string b){//加法处理 
	int mmax=max(a.size(),b.size());//最大长度 
	while(a.size()<mmax) a="0"+a;//最大对齐 
	while(b.size()<mmax) b="0"+b;//最大对齐 
	string c="";//结果 
	int jin=0;//进位 
	for(int i=mmax-1;i>=0;i--){
		int wei=a[i]+b[i]-2*'0'+jin;//对应位加法结果 
		jin=wei/10;//进位值 
		wei%=10;//保留值 
		c=char('0'+wei)+c;
	}
	if(jin!=0) c=char('0'+jin)+c;//如果最终还需要进位 
	cout<<c<<endl;
}
int main(){
    string a,b;
    while(cin>>a){
    	b="";
	    int f=0;
	    for(f;a[f]!='+';f++);//分割字符串 
	    for(int i=1;f+i<a.size();i++){
	        b+=a[f+i];
	    }
	    a.erase(a.begin()+f,a.end());//删除a中+以后的部分 
	    solve(a,b);
	}
	return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cout0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值