这道题,分析如下,1到n的阶乘末尾的0数有多少个,只需要统计出n分别除以5,25,125...等5的整数次幂即可,然后相加就可得到n末尾包含的0的个数。每次5出现首先2,4都比5小,所以对于新出现的5的整数次幂的倍数时,前面肯定已经存在了足够的2使得2*5=10,从而在末尾产生新的0。
我的实现过程如下:
class Solution {
public:
/*
* @param n: A long integer
* @return: An integer, denote the number of trailing zeros in n!
*/
long long trailingZeros(long long n) {
// write your code here, try to do it without arithmetic operators.
long long sum=0;
while(n!=0)
{
sum+=n/5;
n=n/5;
}
return sum;
}
};