携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情
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 <= 10^9
解题
/**
* @param {number} k
* @return {number}
*/
var preimageSizeFZF = function (k) {
const trailingZeroes = (n) => {
let res = 0;
while (n > 0) {
n = (n / 5) | 0;
res += n;
}
return res;
};
const help = (k) => {
let l = 0;
let r = 5 * k;
while (l <= r) {
const mid = Math.floor(r / 2 + l / 2);
if (trailingZeroes(mid) < k) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return r + 1;
};
let n = help(k);
return trailingZeroes(n) === k ? 5 : 0;
};