题意:
求阶乘N!的末尾的零的个数。
分析:
首先大数肯定是不用想了,题目给的时间只有2s...
那么怎么办呢?偶转载的一篇文章里有讲过。http://blog.csdn.net/cqlf__/article/details/6974902
形成末尾0,就是因子5的数量,一开始我从5~N找起,花了一番功夫把26/5==0类似这种情况处理掉,并且也能出结果了,卡B了。
超时,输入1000000000看看发现等了很久才出结果,不超才怪。
然后继续看了下文章,发现了更好的算法,直接N/5,ym.
/*#include <stdio.h>
int main()
{
long T,N,num;
long j,i;
scanf("%d",&T);
while(T--)
{
num=0;
scanf("%d",&N);
for(j=5;j<=N;j++)
{
i=j;
while(i)
{
if(i%5!=0) break;
if(i%5==0) num++;
i=i/5;
}
}
printf("%d\n",num);
}
return 0;
}*/
#include <stdio.h>
int main()
{
long cnt,T,N;
scanf("%d",&T);
while(T--)
{
cnt=0;
scanf("%d",&N);
while(N)
{
N/=5;
cnt+=N;
}
printf("%d\n",cnt);
}
}