大整数加法问题
  • 板块学术版
  • 楼主Stevehim
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/8/16 09:53
  • 上次更新2023/10/27 15:12:26
查看原帖
大整数加法问题
759274
Stevehim楼主2022/8/16 09:53

在noi judge上看到的,不知道去哪里问就来洛谷了。。。 原题链接: 想问一下我这个哪里错了。。。

//存疑????
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
char a1[100];
char b1[100];
int a[100], b[100], c[100];
int lena, lenb;
int i, x;

int main() {
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	memset(c, 0, sizeof(c));
	//输入
	cin.getline(a1, 100);
	cin.getline(b1, 100);
	lena = strlen(a1);
	lenb = strlen(b1);
	//存储
	for ( i = 0; i <= lena - 1; i++) {
		a[lena - i] = a1[i] - '0';
	}
//	cout << "a倒序为:";
//	for (int j = 1; j < lena; j++) {
//		cout << a[j];
//	}
	cout << endl;
	for ( i = 0; i <= lenb - 1; i++) {
		b[lenb - i] = b1[i] - '0';
	}
//	cout << "b倒序为:";
//	for (int j = 1; j < lenb; j++) {
//		cout << b[j];
//	}
	cout << endl;
	int 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;//检测是否为0;为0就不输出
	//处理前导0;
	while (c[lenc] == 0) {
		lenc--;
	}
	if (lenc <= 0) { //检测0
		cout << 0;
		return 0;
	}

	for ( i = lenc; i >= 1; i--) {
		cout << c[i];
	}
	cout << endl;
	return 0;

}

2022/8/16 09:53
加载中...