c++语言数组的方法求n的阶乘对997取余 只要一个主函数
时间: 2024-04-08 12:29:19 浏览: 183
以下是使用数组的方法,在一个主函数中求n的阶乘对997取余的C++代码示例:
```c++
#include <iostream>
int main() {
int n;
std::cout << "请输入一个整数n:";
std::cin >> n;
int result = 1;
int arr[998] = {0}; // 数组用于存储中间结果,下标对应数字
arr[0] = 1; // 0的阶乘为1
for (int i = 1; i <= n; i++) {
result = (result * i) % 997;
arr[i] = result;
}
std::cout << n << "的阶乘对997取余的结果是:" << result << std::endl;
return 0;
}
```
在这个示例中,我们使用数组`arr`来存储每个数字的阶乘对997取余的结果。在循环中,我们首先计算当前数字的阶乘对997取余,并将结果存储在`result`变量中。然后,将该结果存储在数组`arr`中,以便在后续计算中可以直接使用,而不需要重复计算。
你可以通过输入一个整数n来测试该代码,并获得n的阶乘对997取余的结果。
相关问题
c++语言高精度的方法求n的阶乘对997取余 只要一个主函数
以下是使用高精度算法求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取余的结果。
c++语言数组的方法求n的阶乘对997取余
你可以使用数组来存储中间结果,以减少重复计算。以下是使用C++编写的示例代码:
```c++
#include <iostream>
int factorialMod(int n) {
int result = 1;
int arr[998] = {0}; // 数组用于存储中间结果,下标对应数字
arr[0] = 1; // 0的阶乘为1
for (int i = 1; i <= n; i++) {
result = (result * i) % 997;
arr[i] = result;
}
return result;
}
int main() {
int n;
std::cout << "请输入一个整数n:";
std::cin >> n;
int result = factorialMod(n);
std::cout << n << "的阶乘对997取余的结果是:" << result << std::endl;
return 0;
}
```
在这个示例中,我们使用数组`arr`来存储每个数字的阶乘对997取余的结果。在循环中,我们首先计算当前数字的阶乘对997取余,并将结果存储在`result`变量中。然后,将该结果存储在数组`arr`中,以便在后续计算中可以直接使用,而不需要重复计算。
你可以通过输入一个整数n来测试该代码,并获得n的阶乘对997取余的结果。
阅读全文