c++语言高精度的方法求n的阶乘对997取余 只要一个主函数
时间: 2024-04-08 18:29:25 浏览: 118
C++ 高精度求阶乘之和
以下是使用高精度算法求n的阶乘对997取余的C++代码示例,只包含一个主函数:
```c++
#include <iostream>
#include <vector>
std::vector<int> multiply(std::vector<int>& num, int x) {
std::vector<int> res;
int carry = 0;
for (int i = 0; i < num.size(); i++) {
int product = num[i] * x + carry;
res.push_back(product % 10);
carry = product / 10;
}
while (carry != 0) {
res.push_back(carry % 10);
carry /= 10;
}
return res;
}
std::vector<int> factorialMod(int n) {
std::vector<int> result;
result.push_back(1);
for (int i = 2; i <= n; i++) {
result = multiply(result, i);
for (int j = 0; j < result.size(); j++) {
result[j] %= 997;
}
}
return result;
}
int main() {
int n;
std::cout << "请输入一个整数n:";
std::cin >> n;
std::vector<int> result = factorialMod(n);
std::cout << n << "的阶乘对997取余的结果是:";
for (int i = result.size() - 1; i >= 0; i--) {
std::cout << result[i];
}
std::cout << std::endl;
return 0;
}
```
在这个示例中,我们使用一个`std::vector<int>`来表示高精度整数。`multiply`函数用于将高精度整数与一个整数相乘,并返回结果。`factorialMod`函数使用循环计算n的阶乘,并在每一步都对997取余。最后,我们将结果逆序输出。
你可以通过输入一个整数n来测试该代码,并获得n的阶乘对997取余的结果。
阅读全文