标签:793 函数 int lo mid long hi 阶乘 return
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,函数,int,lo,mid,long,hi,阶乘,return 来源: https://www.cnblogs.com/zle1992/p/16651267.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。