第六个测试点错了有佬帮忙看看哪里有问题吗
查看原帖
第六个测试点错了有佬帮忙看看哪里有问题吗
877584
Cruelty楼主2024/5/14 13:06
#include <iostream>
#include <vector>
using namespace std;

typedef long long LL;

bool cmp(vector<int> &A, vector<int> &B) {
	if (A.size() != B.size())
		return A.size() >= B.size();
	for (LL i = A.size() - 1; i >= 0; i++)
		if (A[i] != B[i])
			return A[i] > B[i];
	return true;
}

vector<int> sub(vector<int> &A, vector<int> &B) {
	int t = 0;
	vector<int>C;
	for (LL i = 0; i < A.size(); i++) {
		t += A[i];
		if (i < B.size())
			t -= B[i];
		C.push_back((t + 10) % 10);
		if (t < 0)
			t = -1;
		else
			t = 0;
	}
	while (C.size() > 1 && C.back() == 0)
		C.pop_back();
	return C;
}

int main() {
	string a, b;
	vector<int>A, B;
	cin >> a >> b;
	for (LL i = a.size() - 1; i >= 0; i--)
		A.push_back(a[i] - '0');
	for (LL i = b.size() - 1; i >= 0; i--)
		B.push_back(b[i] - '0');
	vector<int> C;
	if (cmp(A, B))
		C = sub(A, B);
	else
		C = sub(B, A), printf("-");
	for (LL i = C.size() - 1; i >= 0; i--)
		printf("%d", C[i]);
	return 0;
}
2024/5/14 13:06
加载中...