酷代码 AI
菜单
服务商

C++实现高精度除以高精度:换行输出商和余数的完整代码

```cpp #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; // 比较两个大整数的大小 bool cmp(const string& a, const 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"; if (cmp(a, b)) swap(a, b); string res; 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; } res.push_back(diff + '0'); } while (res.back() == '0') res.pop_back(); reverse(res.begin(), res.end()); return res; } // 大整数高精度除法 pair<string, string> divide(string dividend, string divisor) { if (divisor == "0") throw invalid_argument("Division by zero"); if (cmp(dividend, divisor)) return {"0", dividend}; string quotient; string remainder; for (int i = 0; i < dividend.length(); i++) { remainder += dividend[i]; int count = 0; while (!cmp(remainder, divisor)) { remainder = subtract(remainder, divisor); count++; } quotient += to_string(count); } // 去除商前面的前导零 int start = 0; while (start < quotient.length() - 1 && quotient[start] == '0') start++; quotient = quotient.substr(start); return {quotient, remainder}; } int main() { string dividend, divisor; cin >> dividend >> divisor; auto result = divide(dividend, divisor); cout << result.first << endl; cout << result.second << endl; return 0; } ``` ######[AI问答 | 579点数解答 | 2025-09-20 10:08:42]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]