高精度加法c++

该文章提供了一种使用C++处理大数相加的方法,通过将数字作为字符串输入,反向遍历并处理进位来计算和。代码示例展示了如何避免进位错误,同时邀请读者分享更简洁的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

求A+B的值,A和B可能非常大!

输入

输入两个数,分别是A和B

输出

只有一行,表示他们的和

样例输入
10000000000000000000000000000000000000001
10000000000000000000000000000000000000001
样例输出
20000000000000000000000000000000000000002

这题就不讲思路了,很简单,只要不忘掉进位,就三个字(很简单

上代码:

#include <bits/stdc++.h>//万能头
using namespace std;
int main(){
	string a,b;//字符串更方便
	cin>>a>>b;
	reverse(a.begin(),a.end());//反转字符串a
	reverse(b.begin(),b.end());//反转字符串b
	int ans[10000+5];
	int jw=0;//代表进位
	int n=max(a.length(),b.length());//
	for(int i=0;i<n;i++){
		//TODO
		if(a[i]=='\0'){
			//TODO
			a[i]='0';
		}
		if(b[i]=='\0'){
			b[i]='0';
		}
		ans[i]=jw+(a[i]-'0')+(b[i]-'0');
		jw=ans[i]/10;//计算进位
		ans[i]%=10;
	}
	if(jw){
		//TODO
		ans[n]=1;
		n++;
	}
	else{
		//TODO
		n--;
	} 
	for(int i=n;i>=0;i--){
		//TODO
		cout<<ans[i];
	}
	return 0;//完美结束
}

有哪位位大佬有更简便的方法,欢迎私信!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值