列表

详情


793. 阶乘函数后 K 个零

 f(x) 是 x! 末尾是 0 的数量。回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 。

给定 k,找出返回能满足 f(x) = k 的非负整数 x 的数量。

 

示例 1:

输入:k = 0
输出:5
解释:0!, 1!, 2!, 3!, 和 4! 均符合 k = 0 的条件。

示例 2:

输入:k = 5
输出:0
解释:没有匹配到这样的 x!,符合 k = 5 的条件。

示例 3:

输入: k = 3
输出: 5

 

提示:

相似题目

阶乘后的零

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int preimageSizeFZF(int k) { } };

python3 解法, 执行用时: 44 ms, 内存消耗: 13.5 MB, 提交时间: 2020-12-04 15:12:16

class Solution:
    def preimageSizeFZF(self, K: int) -> int:
        return self.left_bound(K+1) - self.left_bound(K)


    # 计算n的阶乘后有几个0, n里有几个5就
    def trailingZeroes(self, n: int):
        ans = 0
        while n >= 5:
            ans += n // 5
            n //= 5
        return ans


    # 搜索trailingZeroes(n) == K的左边界
    def left_bound(self, target: int):
        lo, hi = 0, 2**63 - 1
        while lo < hi:
            mid = lo + (hi - lo) // 2
            if self.trailingZeroes(mid) < target:
                lo = mid + 1
            else:
                hi = mid
        return lo

上一题