高精度加法(原题目名为大整数加法)

题目来源:信息学奥赛一本通(c++版)在线测评系统

最近学校也是教到了算法部分,在这里就为大家提供一下高精度加法的代码吧!

【题目描述】
求两个不超过200位的非负整数的和。

【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。

【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555

代码区:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a1,b1;
	cin>>a1>>b1;
	//定义,输入要求的两个字符串 
	int a[200]={},b[200]={},c[200]={}; //定义int数字类型数组 
	int lena=a1.size(),lenb=b1.size();//定义字符串长度 
	for(int i=0;i<lena;i++) a[i]=a1[lena-i-1]-'0';
	for(int i=0;i<lenb;i++) b[i]=b1[lenb-i-1]-'0';
	//将字符串内的内容导至数字数组中 
	int lenc=max(lena,lenb);//定义最终输出长度 
	for(int i=0;i<lenc;i++) c[i]=a[i]+b[i];//将结果导入第三个数组中 
	for(int i=0;i<lenc;i++)
	{
		c[i+1]=c[i+1]+c[i]/10;
		c[i]=c[i]%10;
	}
	//进位处理 
	lenc++; 
	while(c[lenc]==0) lenc--;//减少多余的0 
	for(int i=lenc;i>=0;i--) cout<<c[i];//倒序打印数组 
	return 0;//返回0 
}

以上就是高精度加法的代码了!希望大家多多支持,多多鼓励我,你们的每一个点赞都对我有很大的帮助!

如果有可以改进的地方,欢迎私信,欢迎评论!我会在第一时间答复!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值