酷代码 AI
菜单
服务商

高精度除以高精度,换行输出它们的商和余数。 c++ 要加using namespace std; 不要注释

```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; } ``` [2025-09-20 10:08:42 | AI问答 | 579点数解答]

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