为啥错了?(c++小白求助)

给出两个大整数 A,B,求他们的差 A−B。

输入格式

读入两行,第一行为整数 A,第二行为整数 B。

整数的位数不超过 10000。

输出格式

输出一个整数,表示 A−B。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 subtraction.in,输出文件为 subtraction.out

样例输入复制

92389122013012030212
100000000000000000001

样例输出复制

-7610877986987969789

 

 

#include <bits/stdc++.h>
using namespace std;
int main() {
        freopen("subtraction.in", "r", stdin);
        freopen("subtraction.out", "w", stdout);
	char a[10005], b[10005];
	int c[10005] = {0}, d[10005] = {0};
	scanf("%s%s", &a, &b);
	int n, m;
	n = strlen(a);
	m = strlen(b);
	if (n < m || n == m && strcmp(a, b) < 0) {
		cout << "-";
		swap(n, m);
		swap(a, b);
	}
	for (int i = 0; i < n; i++) {
		c[i] = a[n - i - 1] - '0';
	}
	for (int i = 0; i < m; i++) {
		d[i] = b[m - i - 1] - '0';
	}
	int sum[105] = {0};
	for (int i = 0; i < n; i++) {
		sum[i] = c[i] - d[i];
		if (sum[i] < 0) {
			sum[i] += 10;
			c[i + 1]--;
		}
	}
	int t = n;
	while (sum[t] == 0 && t > 0) {
		t--;
	}
	for (int i = t; i >= 0; i--) {
		cout << sum[i];
	}
	return 0;
}
错误信息如下:

已通过 13 组测试数据,共 20 组

 

第12行,应该改成if (n < m || (n == m && strcmp(a, b) < 0)),少了个括号