地址:http://acm.hdu.edu.cn/showproblem.php?pid=1124
题意:给出n,求n!的末尾0数
解析:对于n!,要想出现0,那么有2*5和4*5,而4*5又可以分成2*2*5,所以只有2*5可以提供0。2的出现次数肯定比5多,所以5的个数就是末尾0的个数。求法就是不停/5,用cnt累加结果,cnt就是n!里可以分成的5的个数了。
20:20/5==4。cnt=4。因为20!=20*.....*15*......10*......5,一共是4个数提供了5。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long ll;
int ac(ll x)
{
ll cnt=0;
while(x)
{
cnt+=x/5;
x=x/5;
}
return cnt;
}
int main()
{
int t;
cin>>t;
while(t--)
{
ll n;
cin>>n;
cout<<ac(n)<<endl;
}
}