C语言中输入正整数n(2<n<3000),输出n!最后不等于0的两位数。
时间: 2024-05-26 10:11:06 浏览: 23
好的,我明白了。对于这个问题,可以使用数学上的方法来解决。我们需要计算n!并找到最后不等于0的两位数。
首先,我们可以使用循环来计算n!。具体地,我们从1到n依次乘上所有的正整数。
接下来,我们需要找到n!的末尾有多少个0,因为这些0会影响我们找最后不为0的两位数。具体地,n!的末尾有多少个0取决于n!中因数5的个数。因为每个因数5都可以和一个因数2相乘得到一个因数10,所以n!末尾0的个数等于n!中因数5的个数。因此,我们可以通过循环来计算n!中因数5的个数。
最后,我们可以通过循环将n!除以10直到最后两位不为0,然后输出这两位数。具体地,我们可以使用一个while循环,每次判断n!对10取余是否为0,若是,则将n!除以10。
下面是C语言的代码实现:
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数n (2 < n < 3000): ");
scanf("%d", &n);
// 计算 n!
int i, j;
long long factorial = 1;
for (i = 1; i <= n; i++) {
factorial *= i;
}
// 计算 n! 中因数 5 的个数
int count = 0;
for (i = 5; i <= n; i += 5) {
j = i;
while (j % 5 == 0) {
count++;
j /= 5;
}
}
// 将 n! 不断除以 10 直到最后两位不为 0
while (factorial % 100 == 0) {
factorial /= 10;
}
// 输出最后不为 0 的两位数
printf("n! 最后不为 0 的两位数为: %lld\n", factorial % 100);
return 0;
}
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)