@[CSP_JAKME](/user/973480) 给个思路:
写一个比较大小的函数, 减法时比较, 把大的放在前面, 最后加个 '-'
by Joker_Error_404 @ 2024-03-28 20:53:27
@[CSP_JAKME](/user/973480)
之前写的, 试着看吧
```cpp
int cmp() {
if (A.size() == B.size()) {
for (int i = q - 1; i >= 0; --i) {
if (a[i] < b[i]) {
return -1;
} else if (a[i] > b[i]) {
return 1;
}
}
} else {
int x = A.size(), y = B.size();
if (x > y) {
return 1;
} else if (x == y) {
return 0;
} else {
return -1;
}
}
return 0;
}
void sub() {
memset(c, 0, sizeof(c));
e = max(q, w);
int x = cmp();
if (x == 0) {
putchar('0');
putchar(10);
return;
} else if (x > 0) {
for (int i = 0; i < e; ++i) {
c[i] = a[i] - b[i];
}
while (c[e] == 0 && e > 1) {
--e;
}
for (int i = 0; i < e; ++i) {
if (c[i] < 0) {
--c[i + 1];
c[i] += 10;
}
}
if (c[e]) {
++e;
if (c[e - 1] < -9) {
c[e - 1] += 10;
--c[e];
}
}
} else {
for (int i = 0; i < e; ++i) {
c[i] = b[i] - a[i];
}
while (c[e] == 0 && e > 1) {
--e;
}
for (int i = 0; i < e; ++i) {
if (c[i] < 0) {
--c[i + 1];
c[i] += 10;
}
}
if (c[e]) {
++e;
if (c[e - 1] < -9) {
c[e - 1] += 10;
--c[e];
}
}
putchar('-');
}
for (int i = e - 1; i >= 0; --i) {
printf("%d", c[i]);
}
putchar('\n');
}
```
by Joker_Error_404 @ 2024-03-28 20:56:51