class Solution {
public:
int preimageSizeFZF(int k) {
}
};
793. 阶乘函数后 K 个零
f(x)
是 x!
末尾是 0 的数量。回想一下 x! = 1 * 2 * 3 * ... * x
,且 0! = 1
。
f(3) = 0
,因为 3! = 6
的末尾没有 0 ;而 f(11) = 2
,因为 11!= 39916800
末端有 2 个 0 。给定 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
提示:
0 <= k <= 109
相似题目
原站题解
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