用c++写代码 输入一系列整数N(N<=90),求这些数的阶乘,因为阶乘很大,所以需要对97取余。 输入 一行,若干个整数(个数<100,整数<=90)。 输出 输出m个整数(阶乘对97取余结果),由空格隔开。 样例输入 Copy 3 5 8 样例输出 Copy 6 23 65
时间: 2024-04-16 09:26:14 浏览: 13
下面是用 C++ 编写的解决方案:
```
#include <iostream>
using namespace std;
int main() {
const int MOD = 97;
int n;
while (cin >> n) {
int result = 1;
for (int i = 2; i <= n; i++) {
result = (result * i) % MOD;
}
cout << result << " ";
}
return 0;
}
```
你可以将输入的一系列整数放在一行中,用空格隔开,然后程序会依次计算每个整数的阶乘,并对 97 取余后输出。
相关问题
计算整数n!(n的阶乘)末尾有多少个0。例如:n=5,n!=120,末尾有1个0。 输入描述 第一行输入一个整数T(1<=T<=20)表示T组数据。 接下来T行每行1个数n(0<=n<2^31) 。 输出描述 第一行输入一个整数T(1<=T<=20)表示T组数据。 接下来T行每行1个数n(0<=n<2^31) 。用C++解决
好的,这是一个数学问题,可以用计算阶乘末尾0的个数的方法来解决。
对于一个数n,它的阶乘末尾0的个数,实际上就是n!中因子5的个数。因为只有2和5相乘才能得到10,所以我们只需要计算n!中因子5的个数即可。
具体地,n!中因子5的个数可以用以下公式计算:
count = n/5 + n/25 + n/125 + n/625 + ...
其中,n/5表示n中有多少个5的倍数,n/25表示n中有多少个25的倍数(每个25包含两个5),以此类推。
以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int count = 0;
while (n >= 5) {
count += n/5;
n /= 5;
}
cout << count << endl;
}
return 0;
}
```
注意,当n比较大时,上面的公式可能会出现浮点数精度问题,可以用循环计算的方法来避免。
编写一个程序,实现功能:输入一个整数 n,求 n 的阶乘 n! 的C++代码。
#include <stdio.h>
int main() {
int n, i;
long long factorial = 1; // 阶乘可能非常大,需要使用 long long 类型
printf("请输入一个整数 n:");
scanf("%d", &n);
if (n < 0) {
printf("错误:n 必须为非负整数!\n");
} else {
// 计算阶乘
for (i = 1; i <= n; i++) {
factorial *= i;
}
printf("%d! = %lld\n", n, factorial);
}
return 0;
}