LintCode 1347 尾随零

描述
给定一个整数n,返回n!(n的阶乘)的尾随零的个数。

您的解法时间复杂度应为对数级别。

样例
样例1

输入: n = 5
输出: 1
解释:
1*2*3*4*5=120

样例2

输入: n = 10
输出: 2
解释:
1*2*3*4*5*6*7*8*9*10=3628800

题解

最终尾随零的数量之和质因子中2和5的数量有关,很容易想到质因子5的数量一定会比2少,所以只需要算出n!的质因子5的数量即可
所以我们考虑1~n!之间5的倍数,25的倍数,125的倍数,625的倍数…的数量,即可算出答案

class Solution {
    
    
public:
    /**
     * @param n: a integer
     * @return: return a integer
     */
    int trailingZeroes(int n) {
    
    
        // write your code here
        int res = 0;
        while (n >= 5) {
    
    
            res += n / 5;
            n /= 5;
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/m0_46161051/article/details/119946802
今日推荐