0
点赞
收藏
分享

微信扫一扫

HDU1124求n的阶乘后0的个数

三次方 2022-09-26 阅读 47

地址:​​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;
}
}

 



举报

相关推荐

0 条评论