我遇到了一个问题:
有一题他需要求N!中所有的0
而我写的只能求末尾的0
这是我的代码:
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int r=0;
while(1){
if(n<5){
break;
}
r+=n/5;
n=n/5;
}
cout<<r;
return 0;
}
比如12!=479001600 ,得数应是4,而我的只有2(末尾的)
求求各位
帮我改进一下
改成能求所有0的
求求了!!
欢迎留言
你的程序按照5的因数个计算n!的0的个数,只能算出末尾连续0个数,其它位置的0不能算出。
准确的结果需要计算出n!的实际值后,才能数其它位置0个数。
通过数组计算n!,结果输出时是按数组逐一输出的,加入一行计数为0加1即可出结果。
100!例子“
C语言通过数组计算阶乘输出大数(40000位) 例如10000!结果长度 35660位整数。
for(int k=digit; k>=1; --k)
{ printf("%d",a[k-1]); if (a[k-1]==0) z++;}
参考https://blog.csdn.net/m0_54619218/article/details/128031443
源码:
C语言源代码(big.c):
https://download.csdn.net/download/m0_54619218/87152041