求助!

灌水区

@[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


|