文巾解题 793. 阶乘函数后 K 个零
1 题目描述
2 解题思路
令 zeta(x) 为 x! 末尾零的个数。如果 x! 可以分解为素数的乘积,如的形式,那么 x! 末尾零的个数为 min(a, b) = b。
zeta(x) 就是 x 除以 5 的次数之和,即 zeta(x) 等于
可以看出,zeta(x) 是一个单调递增函数,因此可以使用二分查找求解。
使用二分查找找出满足 zeta(x) = K 的最大 x 和最小 x
由于一定存在 zeta(5a-1) < zeta(5a) = zeta(5a+1) = zeta(5a+2) = zeta(5a+3) = zeta(5a+4) < zeta(5a+5),即如果存在某个 x 使得 zeta(x) = K,那么一定存在连续 5 个数的阶乘末尾零的个数都为 K;如果不存在这样的 x,那么阶乘末尾零的个数为 K 的数字只有 0 个。
class Solution(object):def preimageSizeFZF(self, K):def zeta(x):if(x==0):return 0else:return x//5 + zeta(x//5) lo, hi = 4*K, 5*K + 1while lo < hi:mi = (lo + hi) // 2zmi = zeta(mi)if zmi == K: return 5elif zmi < K: lo = mi + 1else: hi = mireturn 0
#最终没有找到这个数
接下来解释一下这边二分查找的时候的左边界和右边界是怎么找的:
我们可以得到
即x≥4k
即x≤5k
复杂度分析
时间复杂度:,二分查找的复杂度为 O(log K),其中每一步计算 zeta 的复杂度也为 O(logK)。
空间复杂度:O(logK),zeta 递归调用栈的大小。
文巾解题 793. 阶乘函数后 K 个零相关推荐
- Java实现 LeetCode 793 阶乘函数后K个零 (分析)
793. 阶乘函数后K个零 f(x) 是 x! 末尾是0的数量.(回想一下 x! = 1 * 2 * 3 * - * x,且0! = 1) 例如, f(3) = 0 ,因为3! = 6的末尾没有0:而 ...
- 793. 阶乘函数后K个零 golang
Me(AC 33 / 44 个通过测试用例) func preimageSizeFZF(K int) int {count := 0for i := 0; i < 1000000; i++ {i ...
- LeetCode 793. 阶乘函数后K个零(二分查找)
1. 题目 f(x) 是 x! 末尾是0的数量.(回想一下 x! = 1 * 2 * 3 * ... * x,且0! = 1) 例如, f(3) = 0 ,因为3! = 6的末尾没有0:而 f(11) ...
- 小黑跟老黑们夜骑车拍完了毕业照面试了两场的leetcode之旅:793. 阶乘函数后 K 个零
小黑代码 class Solution:def preimageSizeFZF(self, k: int) -> int:# 获取n的阶乘的0个数@lru_cachedef get_zero(n ...
- 365天挑战LeetCode1000题——Day 071 阶乘后的零 阶乘函数后 K 个零 最小栈 移除无效的括号
172. 阶乘后的零 代码实现(自解) class Solution {public:int trailingZeroes(int n) {int ans = 0;while (n) {n /= 5; ...
- 力扣- -阶乘函数后K个零
力扣- -阶乘函数后K个零 文章目录 力扣- -阶乘函数后K个零 一.172. 阶乘后的零 二.分析 三.代码 四.阶乘函数后K个零 五.分析 六.完整代码 一.172. 阶乘后的零 二.分析 求n! ...
- DS查找—折半查找求阶乘函数后K个零
题目描述 f(x) 是 x! 末尾是 0 的数量,给定 K,找出多少个非负整数 x ,能满足 f(x) = K . (x! = 1 * 2 * 3 * - * x,且 0! = 1 ) 例如, f(3 ...
- 阶乘函数后K个零,详解
题目: f(x) 是 x! 末尾是0的数量.(回想一下 x! = 1 * 2 * 3 * - * x,且0! = 1) 例如, f(3) = 0 ,因为3! = 6的末尾没有0:而 f(11) = 2 ...
- C练题笔记之:Leetcode-793. 阶乘函数后 K 个零
题目: f(x) 是 x! 末尾是 0 的数量.回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 . 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 :而 ...
最新文章
- 域名跳转301-LAMP环境搭建
- CSS+HTML大白
- 实验一:JDK下载与安装、Eclipse下载与使用总结心得
- STM8学习笔记---串口uart1
- java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...
- Github 新学入门
- hdfs中一个block块默认多大?
- python字符串解析_Python-字符串解析-正则-re
- 使用VS2015编写C/C++开始步骤
- java jvm对象_Java对象在JVM中长啥样
- 装机 win7 64 IE11
- Android JNI作用及其详解
- 前端学习/ Day1/HTTP简单易懂/GET POST/HTTP特性/HTTP与HTTPS/HTTP版本演变/加解密数字签名数字证书
- qq群api协议,非官方协议,抓包获取的QQ群操作协议
- 一文速学-玩转MySQL中INTERVAL关键字和INTERVAL()函数用法讲解
- c语言程序设计对称数,对称数 问题
- Android显示横幅样式通知
- 使用华为手机怎么从网上打印资料?
- 第7章 项目成本管理
- Linux根目录下各目录的作用
热门文章
- Python3中的内置函数
- mybatis association表关联与rowbounds共同使用时的异常及其解决方案
- SQL Server事务
- Spark SQL Catalyst源代码分析之TreeNode Library
- love2d教程3--输入和音乐
- php开发支持的文件类型整理
- 写在开年:移植wolfssl4.3.0到w60x_sdk_3.04时的一点问题
- PAT甲级1031 Hello World for U:[C++题解]模拟、数学运算
- 51Nod5105 子矩阵求和
- OpenCV实战中:blender-feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常的处理方法