题型:数论
题意:说了一大堆,意思一句话,求n!的末尾0的个数。
分析:
如果将n!分解成一堆质数,那么n!中的0是有什么组成的呢?很明显,是由2和5组成的,因为正好这俩数的积为10。
这样就有疑问了,是看2的个数呢,还是看5的个数呢?
n!=1*2*3*……*n,因为偶数的个数一定大于5的个数,就是说2的个数一定大于5的个数,所以看5的个数即可。
这样写起来就十分简单了。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
__int64 count_zero(__int64 m) {
__int64 sum=0;
while(m)
sum+=(m/=5);
return sum;
}
int main() {
int t;
__int64 n;
scanf("%d",&t);
while(t--) {
scanf("%I64d",&n);
printf("%I64d\n",count_zero(n));
}
return 0;
}