1WA求助
查看原帖
1WA求助
1444793
liumingdi楼主2024/9/12 22:18
#include <iostream>
#include <cstring>
using namespace std;

void reverse(char *arr, int size) {
	char tmp;
	for (int n = 0; n < size / 2; n++) {
		tmp = arr[n];
		arr[n] = arr[size - n - 1];
		arr[size - n - 1] = tmp;
	}
}

void add(char *num1, int num1Size, char *num2, int num2Size) {
	int carry = 0;
	int m, n;
	for (n = 0; n < num2Size; n++) {
		int n1 = num1[n] - '0';
		int n2 = num2[n] - '0';
		int n3 = n1 + n2 + carry;
		carry = n3 / 10;
		num1[n] = n3 % 10 + '0';
	}
	if (carry > 0) {
		for (m = n; m < num1Size; m++) {
			int tmp = num1[m] - '0' + carry;
			num1[m] = tmp % 10;
			carry = tmp / 10;
		}
	}
	if (carry > 0) {
		num1[m] = '1';
		num1[m + 1] = '\0';
	}

}

int main() {

	char a[501], b[501], c[502];

	cin >> a;
	cin >> b;
	int sizeA = strlen(a);
	int sizeB = strlen(b);

	reverse(a, sizeA);
	reverse(b, sizeB);
	//cout << "sizeA = " << sizeA << ", sizeB = " << sizeB << endl;
	if (sizeA > sizeB) {
		strcpy(c, a);
		//cout << c << endl;
		add(c, sizeA, b, sizeB);
	} else {
		strcpy(c, b);
		add(c, sizeB, a, sizeA);
	}
	reverse(c, strlen(c));
	cout << c;

	return 0;
}

求助

2024/9/12 22:18
加载中...