概述
算法提高 大数加法
时间限制:1.0s 内存限制:256.0MB
问题描述
输入两个正整数a,b,输出a+b的值。
输入格式
两行,第一行a,第二行b。a和b的长度均小于1000位。
输出格式
一行,a+b的值。
样例输入
4
2
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;
}
最后
以上就是典雅盼望为你收集整理的蓝桥杯 算法提高 大数加法的全部内容,希望文章能够帮你解决蓝桥杯 算法提高 大数加法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复