改成高精度减法


```cpp #include <iostream> #include <string> using namespace std; // 比较两个大整数的大小 bool cmp(string a, string b) { if (a.length() != b.length()) { return a.length() < b.length(); } return a < b; } // 高精度减法 string subtract(string a, string b) { if (a == b) { return "0"; } bool isNegative = false; if (cmp(a, b)) { swap(a, b); isNegative = true; } string result; int borrow = 0; int i = a.length() - 1, j = b.length() - 1; while (i >= 0 || j >= 0 || borrow) { int x = i >= 0 ? a[i--] - '0' : 0; int y = j >= 0 ? b[j--] - '0' : 0; int diff = x - y - borrow; if (diff < 0) { diff += 10; borrow = 1; } else { borrow = 0; } result = to_string(diff) + result; } // 去除前导零 while (result.length() > 1 && result[0] == '0') { result = result.substr(1); } if (isNegative) { result = "-" + result; } return result; } int main() { string num1, num2; cin >> num1 >> num2; string result = subtract(num1, num2); cout << result << endl; return 0; } ``` 代码解释: 1. `cmp` 函数:用于比较两个大整数的大小。先比较长度,如果长度不同,长度短的数小;如果长度相同,则按字典序比较。 2. `subtract` 函数: - 首先判断两个数是否相等,若相等则直接返回 `"0"`。 - 若 `a` 小于 `b`,交换它们并标记结果为负数。 - 逐位相减,处理借位情况。 - 去除结果的前导零。 - 如果结果为负数,添加负号。 3. `main` 函数: - 读取两个大整数。 - 调用 `subtract` 函数进行减法运算。 - 输出结果。 [2025-09-20 10:16:42 | AI问答 | 601点数解答]
- 实现a=3x^14+2x^8+1和b=8x^14–3x^10+10x^6一元稀疏多项式的表示及基本操作(建立、销毁、输出、加法、减法)c语言(1615点数解答 | 2024-10-18 17:19:15)154
- 实现两个一元稀疏多项式的表示及基本操作(建立、销毁、输出、加法、减法)c语言(1939点数解答 | 2024-10-18 17:30:58)186
- 随机输入两个式子实现一元稀疏多项式的表示及基本操作(建立、销毁、输出、加法、减法)c语言(1842点数解答 | 2024-10-29 08:45:36)132
- 实现一元稀疏多项式的表示及基本操作(建立、销毁、输出、加法、减法)c语言(1832点数解答 | 2024-10-29 08:49:08)193