末尾有几个零,只要看看这些数中一共有几个质因数5就好了。
1、有四个5的数:625
2、有三个5的数:125、250、375、500、750、875、1000(此处不再算625了)
3、有两个5的数:25、50、75、……、975(以上两类不再计入此处)
4、有一个5的数:5、10、15、……、995(以上三类不再计入此处)
第一类1个数,共4个5
第二类7个数,共21个5
第三类32个数,共64个5
第四类160个数,共160个5
合计共有249个5,那么1000!的末尾就有249个0.
实际计算中,直接求N/5+N/25+N/125+.....即可因为恰好有N个5因子的数被计算了N边
1
#include <stdio.h>2

3
int main()4


{5
int times;6
long N,znum;7
while(scanf("%d",×)!=EOF)8

{9
while(times--)10

{11
znum=0;12
scanf("%ld",&N);13
long five=5;14
while(five<=N)15

{16
znum+=N/five;17
five*=5;18
}19
printf("%ld\n",znum); 20
} 21
}22
return 0; 23
}
本文介绍了一种高效计算阶乘末尾零数量的方法,通过统计质因数5的出现次数来确定零的数量,提供了一个C语言实现的代码示例。

被折叠的 条评论
为什么被折叠?



