酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C++实现:解决千位级正整数相除求商与余数的难题

以下是一个用 C++ 实现求两个大整数之商和余数的示例代码: ```cpp #include <iostream> #include <string> #include <vector> // 将字符串表示的大整数转换为数字向量 std::vector<int> strToDigits(const std::string& str) { std::vector<int> digits; for (char c : str) { digits.push_back(c - '0'); } return digits; } // 实现大整数除法 void divideBigIntegers(const std::string& num1, const std::string& num2) { std::vector<int> dividend = strToDigits(num1); std::vector<int> divisor = strToDigits(num2); std::vector<int> quotient; std::vector<int> remainder = dividend; int carry = 0; while (true) { if (remainder.size() < divisor.size()) { break; } int numDigits = divisor.size(); int current = 0; for (int i = 0; i < numDigits; ++i) { current = current * 10 + remainder[i]; } int q = current / divisor[0]; quotient.push_back(q); std::vector<int> product; for (int i = 0; i < numDigits; ++i) { product.push_back(q * divisor[i]); } for (int i = 0; i < numDigits; ++i) { remainder[i] -= product[i]; if (remainder[i] < 0) { remainder[i] += 10; remainder[i + 1]--; } } while (remainder.size() > 0 && remainder[0] == 0) { remainder.erase(remainder.begin()); } } // 输出商 for (int digit : quotient) { std::cout << digit; } std::cout << std::endl; // 输出余数 for (int digit : remainder) { std::cout << digit; } std::cout << std::endl; } int main() { std::string num1, num2; std::cin >> num1 >> num2; divideBigIntegers(num1, num2); return 0; } ``` 额外需要注意的逻辑点: 1. 处理输入的大整数时,要确保输入的格式正确。 2. 在进行除法运算时,注意边界情况和溢出处理。 3. 对于大整数的存储和运算,要考虑效率和内存使用。 ######[AI写代码神器 | 637点数解答 | 2025-03-09 13:55:32]

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