题意:题目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;
}