解题思路:直接求出这个数然后求其末尾0的个数肯定是不可取的,即使是long类型,也很快会有溢出 现象。可以利用2*5=10,对任意数的阶乘,5的因子个数肯定比2的因子个数要少,所以,可以认为,n的阶乘尾数中有多少个0,取决于1-n这些数中5的因子有多少个。
代码如下:
int main()
{
int i,n,m;
int sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=i;
while(m%5==0)
{
sum++;
m/=5;
}
}
printf("%d\n",sum);
return 0;
}