题目:设计一个算法,计算出n阶乘中尾部零的个数。
样例
11! = 39916800,因此应该返回 2
挑战
O(logN)的时间复杂度。
解:2*5=10;可当n!展开,观察得2的个数肯定比5的个数多,所以只需统计n!中5的个数即可知尾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>5) { sum+=n/5; n=n/5; } return sum; } };