【JS每日一算法:剑指Offer系列】🟨196.阶乘后的零(数学方法)

87 阅读1分钟

给定一个整数 n ,返回 n! 结果中尾随零的数量。

提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1

示例 1:

输入: n = 3
输出: 0
解释: 3! = 6 ,不含尾随 0

示例 2:

输入: n = 5
输出: 1
解释: 5! = 120 ,有一个尾随 0

示例 3:

输入: n = 0
输出: 0

提示:

  • 0 <= n <= 104

题解:

个人博客

更多JS版本题解点击链接关注该仓库👀

/**
 * @description: 数学方法  TC:O(logn)  SC:O(1)
 * @param {*} n 给定整数n
 */
function mathMethod(n){
    /**
     * 本题题意为阶乘后的结果的结尾有几个连续的0
     * 其实也就是能被10整除多少次。换句话说n的因子
     * 中有多少个数相乘能得10,对于其因子而言只有
     * 2*5的倍数,以及10*1的倍数能够得10,因此我们
     * 不断对n/5即可得到阶乘结果得结尾有几个连续的0
     */
    let count=0;
    while(n!=0){
        n=Math.floor(n/5)
        count+=n
    }
    return count
}