酷代码 AI
菜单
服务商

改成高精度减法

```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点数解答]

请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]