10.01 大整数加法

4 篇文章 1 订阅
2 篇文章 2 订阅

//代码AC通过(^ _ ^)(^ ~ ^)


题目描述

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

输入格式

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

输出格式

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

输入样例

22222222222222222222
33333333333333333333

输出样例

55555555555555555555

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int a[2000], b[2000], c[2000];
char a1[2000], b1[2000];

int main(){
	int x, lena, lenb, lenc;
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	memset(c, 0, sizeof(c));
	gets(a1);
	gets(b1); 
	lena = strlen(a1);
	lenb = strlen(b1);
	for(int i = 0; i <= lena - 1; ++i){
		a[lena - i] = a1[i] 	- '0';
	}
	for(int i = 0; i <= lenb - 1; ++i){
		b[lenb - i] = b1[i] - '0';
	}
	lenc = 1;
	x = 0;
	while(lenc <= lena || lenc <= lenb){
		c[lenc] = a[lenc] + b[lenc] + x;
		x = c[lenc] / 10;
		c[lenc] %= 10;
		lenc++;
	}
	c[lenc] = x;
	if(c[lenc] == 0){
		lenc--;
	}
	for(int i = lenc; i >= 1; --i){
		cout << c[i];
	}
	cout << endl;
	return 0;
}

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值