6 3 60 100 1024 23456 8735373
0 14 24 253 5861 2183837
解题思路:由于在质数中。仅仅有2和5相乘才会在尾部出现一个"0"。那么仅仅要将m分解质因数,然后统计2和5的个数,当中较小的一个就是答案。
进一步来说,m分解质因数之后,2的个数绝对照5多。
那么问题进一步简化,仅仅要统计出全部的质因数中有多少个5就可以。
比如:
1-->100中5的倍数
有 5 ,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100.
20 个5
可是除以5后还有可分解为5的
5 10 15 20
此时有4个5
就是说1-->100共同拥有24个5;即所求的0的个数
代码运用递归求5的个数:例如以下:
#include <stdio.h>
int Count=0;//计数
int factorial(int m)
{
	if(m==0) 
		return Count;
	else
	{
		Count+=m/5;
		return factorial(m/5);
	}
}
int main()
{
	int m;
	int n;
	scanf("%d",&n);
	while(n--)
	{
		Count=0;
		scanf("%d",&m);
		printf("%d\n",factorial(m));//递归操作实现
	}
	return 0;
}
原文:http://www.cnblogs.com/slgkaifa/p/7221137.html