两个长整数的除法的代码
时间: 2024-05-03 20:19:33 浏览: 64
以下是两个长整数相除的C++代码示例:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1000; // 数组最大长度
struct BigInteger {
int num[MAXN]; // 数组存储每一位数字
int len; // 数字长度,注意数组下标从0开始
// 构造函数
BigInteger() {
memset(num, 0, sizeof(num));
len = 0;
}
// 从字符串构造
BigInteger(const char* s) {
memset(num, 0, sizeof(num));
len = strlen(s);
for (int i = 0; i < len; i++) {
num[i] = s[len-i-1] - '0';
}
}
// 大数除以小数
BigInteger operator/(int b) const {
BigInteger ans;
ans.len = len; // 商的长度与被除数相同
int r = 0; // 余数
for (int i = len-1; i >= 0; i--) {
r = r * 10 + num[i];
ans.num[i] = r / b;
r %= b;
}
while (ans.len > 1 && ans.num[ans.len-1] == 0) {
ans.len--; // 去掉前导0
}
return ans;
}
};
// 输出函数
ostream& operator<<(ostream& out, const BigInteger& x) {
for (int i = x.len-1; i >= 0; i--) {
out << x.num[i];
}
return out;
}
int main() {
BigInteger a("123456789012345678901234567890");
int b = 123;
cout << a / b << endl; // 输出: 1003713694148798687608763042
return 0;
}
```
该代码实现了将一个长整数除以一个小整数的操作,可以通过将被除数不断地移位来完成除法运算,具体实现可以参考注释。
阅读全文