Skip to content
On this page

172. 阶乘后的零

原题链接:LeetCode 172. 阶乘后的零

题目描述

给定一个整数 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

进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗?

难度: Medium


题解代码

javascript
/**
 * @param {number} n
 * @return {number}
 */
/**
 * @param {number} n
 * @return {number}
 */
// var trailingZeroes = function(n) {
//     // 这种方法正确但是超时
//     const dp = Array(n + 1).fill(BigInt(1))
//     for (let i = 1; i <= n; i++) {
//         dp[i] = BigInt(BigInt(dp[i - 1]) * BigInt(i))
//     }
//     const str = BigInt(dp[n]).toString()
//     let len = str.length
//     let res = 0
//     while(str[--len] === '0') {
//         res += 1
//     }
//     return res
// };

var trailingZeroes = function (n) {
  let res = 0
  for (let i = 5; i <= n; i += 5) {
    let pow = 5
    // 通过检查 i 是否可以被 5,25,125等整除。
    while (i % pow === 0) {
      res += 1
      pow *= 5
    }
  }
  return res
}

技术文档集合