793. 阶乘函数后 K 个零
2022/9/2 23:25:08
本文主要是介绍793. 阶乘函数后 K 个零,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
labuladong 题解思路 难度困难
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
class Solution { public: int trailingZeroes(long n) { int cnt = 0; while(n>0) { cnt += n / 5; n = n /5; } return cnt; } int left_bound(long k) { long lo = 0,hi = 5*k; while(lo < hi) { long mid = lo + (hi - lo) / 2; if (trailingZeroes(mid)<k) { lo = mid + 1; } else if (trailingZeroes(mid)>k) { hi = mid; } else { hi = mid; } } return lo; } int right_bound(long k) { long lo = 0,hi = 5*k; while(lo < hi) { long mid = lo + (hi - lo) / 2; if (trailingZeroes(mid)<k) { lo = mid + 1; } else if (trailingZeroes(mid)>k) { hi = mid; } else { lo = mid + 1; } } return lo-1; } int preimageSizeFZF(int k) { if(k==0 || k ==3 ) return 5; return right_bound(k) - left_bound(k) +1; } };
这篇关于793. 阶乘函数后 K 个零的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南
- 2024-11-23JAVA项目部署入门:新手必读指南
- 2024-11-23Java项目部署入门:新手必看指南
- 2024-11-23Java项目部署入门:新手必读指南
- 2024-11-23Java项目开发入门:新手必读指南
- 2024-11-23JAVA项目开发入门:从零开始的实用教程
- 2024-11-23Java项目开发入门:新手必读指南