我是靠谱客的博主 典雅盼望,最近开发中收集的这篇文章主要介绍蓝桥杯 算法提高 大数加法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  算法提高 大数加法  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  输入两个正整数a,b,输出a+b的值。
输入格式
  两行,第一行a,第二行b。a和b的长度均小于1000位。
输出格式
  一行,a+b的值。
样例输入
4
2
样例输出
6


这道题注意99+999或者999+999 上限加一的问题。
#include<iostream>
#include<string> 
using namespace std;
int main()
{
	string a,b;
	int ans[1005];       //用来保存相加后的结果 
	cin >>a>>b;
	int alen=a.length(),blen=b.length(),i,j;
	if(alen<blen){        //为了防止溢出,我先给他们的前导都加了一个0
		for(i=0;i<=blen-alen;i++)
		a="0"+a;
		
		b="0"+b;     
	}
	else if(alen>blen){      //为了防止溢出,我先给他们的前导都加了一个0
		for(i=0;i<=alen-blen;i++)
		b="0"+b;
		
		a="0"+a;
	}
	else {           //为了防止溢出,我先给他们的前导都加了一个0
		a="0"+a;
		b="0"+b;
	}
//	cout <<a<<endl<<b<<endl;
	int k=0;           
	for(i=a.length()-1;i>=0;i--){ //从低位开始相加 
		int t=(a[i]-'0')+(b[i]-'0');
		if(t>9){                 
			a[i-1]++;       //大于9,则,大位加一。 
			t-=10;            //本位-10 
		}
		ans[k++]=t;   //保存结果。 
	}
	if(ans[k-1]==0)        //如果第一位数是0,即没有溢出,则位数下移一位。 
	k=k-1;
	for(i=k-1;i>=0;i--)     //低位相加,倒序输出。 
	cout <<ans[i];
	return 0;
}


最后

以上就是典雅盼望为你收集整理的蓝桥杯 算法提高 大数加法的全部内容,希望文章能够帮你解决蓝桥杯 算法提高 大数加法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部