高精加做完高精减又遇难,蒟蒻求助呜呜呜
查看原帖
高精加做完高精减又遇难,蒟蒻求助呜呜呜
843596
Otion楼主2022/12/8 13:02
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

string a;
string b;
const int N = 11000;
int numsa[N];
int numsb[N];
bool compare(string a, string b) {
	if (a.size() < b.size()) {
		return false;
	}
	for (int i = a.size(); i >= 0; i--) {
		if (a[i] > b[i]) {
			return true;
		}
		else {
			if (a[i] = b[i]) {
				continue;
			}
			else {
				return false;
			}
		}
	}
	return false;
}

int main() {
	cin >> a;
	cin >> b;
	bool negtiveflag = 0;
	int lena = a.size();
	int lenb = b.size();
	if (compare(a, b)) {
		a.swap(b);
		swap(lena, lenb);
		negtiveflag = 1;
	}
	//reverse and transform
	for (int i = 1; i <= lena; i++) {
		numsa[i] = a[lena - i] - '0';
	}
	for (int i = 1; i <= lenb; i++) {
		numsb[i] = b[lenb - i] - '0';
	}
	//minus
	for (int i = 1; i <= lena; i++) {
		if (numsa[i] < numsb[i]) {
			numsa[i + 1]--;
			numsa[i] += 10;
		}
		numsa[i] -= numsb[i];
	}
	//output
	bool flag = 0;
	for (int i = lena; i >= 1; i--) {
		if (numsa[i] != 0) {
			flag = 1;
		}
		if (flag == 1) {
			if (negtiveflag == 1) {
				cout << '-';
				negtiveflag = 0;
			}
			cout << numsa[i];
		}
	}
	if (flag == 0) {
		cout << 0 << endl;
	}
	return 0;
}
2022/12/8 13:02
加载中...