1168:大整数加法(a+b)

时间限制,内存限制

时间限制: 1000 1000 1000 ms 内存限制: 65536 65536 65536 KB

题目描述

求两个不超过 200 200 200位的非负整数的和。

输入

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

输出

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

输入样例

22222222222222222222
33333333333333333333

输出样例

55555555555555555555

代码

#include<bits/stdc++.h>
using namespace std;
const int sp=101000;
string ay,ny;
int q[sp],b[sp];
void pio(){
	int i=0;
	while(b[i]==0&&i<sp-1) i++;//消除多余的前置0,i<sp-1为了保留一个0,例:0+0=0,需要保留
	for(int j=i;j<sp;j++){
		cout<<b[j];//输出b的值
	}
}
void sio(){
	int s,g=0;
	for(int i=sp-1;i>0;i--)
	{
		s=b[i]+q[i]+g;//s为b的第i位的数+q的第i位的数+上一个数的进位 例:s=1+2+12 注:b[i]=1,q[i]=2,g=12,g为什么=12看下面
		b[i]=s%10;//将s的值的个位存在b的i位上 例:123%10=3,b[i]=3;
		g=s/10;//g储存s的值的进位 例:123/10=12 g=12;
	}
	pio();//调用输出函数 pio();
}
void dio(){
	cin>>ny>>ay;
	int li=ny.size(),lo=ay.size();//获取ny与ay的长度
	for(int i=0;i<li;i++){
		q[sp-li+i]=ny[i]-'0';//将字符串ny转化整型并储存在q数组里
	}
	for(int i=0;i<lo;i++){
		b[sp-lo+i]=ay[i]-'0';//将字符串ay转化整型并储存在b数组里
	}
	sio();//调用加法函数 sio();
}
int main(){
	dio();//调用储存输入函数 dio();
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值