- 1.题目
- 2.思路
- 3.代码实现(Java)
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,找出多少个非负整数 x ,能满足 f(x) = K 。
示例 1: 输入:K = 0 输出:5 解释:0!, 1!, 2!, 3!, and 4! 均符合 K = 0 的条件。
示例 2: 输入:K = 5 输出:0 解释:没有匹配到这样的 x!,符合 K = 5 的条件。
提示: K 是范围在 [0, 109] 的整数。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/preimage-size-of-factorial-zeroes-function
2.思路(1)二分搜索 ① 在做此题之前,需要先了解172.阶乘后的零这题,该思路的解法需要复用其函数trailingZeroes(int n),其返回值为 n! 结果中尾随零的数量。 ② 对于本题,通过分析可得,找出有多少个 n 满足trailingZeroes(int n)==k,就等价于先找出满足条件的 n 的最小值和最大值,然后两者相减再加一,这样就可以算出来满足条件的 n 的个数了。 ③ 又由于n是递增的,故n!也是递增的,即n!是有序的,所以求解上述的最大值和最小值就相当于二分搜索中的搜索左边界和搜索右边界。
3.代码实现(Java)//思路1————二分搜索
public int preimageSizeFZF(int k) {
return (int) (right_bound(k) - left_bound(k) + 1);
}
//求解 n! 结果中尾随零的数量
public long trailingZeroes(long n) {
long res = 0;
long factor = 5;
while (factor
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?