您的位置:首页 > 其它

hdu 1124 Factorial(高斯函数定理)

2017-04-15 20:03 344 查看
题意:题目balabala一大堆,其实他的意思就是让你求n!末尾0的个数。

思路:今天刚刚学到素数,用高斯函数原理。

我解释下:任何正整数n且大于1,都能分解成素数的积,0是怎么来的???使用素数5和2乘积得来的。可以用高斯函数定理来求5的幂和2的幂,又有高斯函数定理5的幂较少,故0的个数由5决定。

ac代码:

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;scanf("%d",&n);while(n--){//求解0的个数,即求解素因子5的幂
long long x;scanf("%lld",&x);
long long ans=0;
long long temp=5;
while(temp<=x){
ans+=x/temp;
temp=temp*5;
}
printf("%lld\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: