标签:help int 求质 mid long ans 阶乘 LeetCode
1. 返回尾零数量
可以转换为求质因子为2和5数量的较小值,实际上就是求质因子为5的数量
class Solution {
public:
int trailingZeroes(int n) {
int ans = 0;
for (int i = 5; i <= n; i += 5) //遍历所有含质因子5的数
for (int x = i; x % 5 == 0; x /= 5) //计算该数有几个为5的质因子
++ans;
return ans;
}
};
//优化写法
class Solution {
public:
int trailingZeroes(int n) {
int ans = 0;
while (n) {
n /= 5;//累求质因子为5的k次方的数
ans += n;
}
return ans;
}
};
2. 求满足阶乘尾零为k数的个数
int preimageSizeFZF(int k) {
return help(k + 1) - help(k);//使得尾零恰为k+1的整数减去使得尾零恰为k的整数
}
long long help(int k) {//二分查找
long long r = 5LL * k;//二分上界
long long l = 0;//二分下界
while (l < r) {
long long mid = (l + r) / 2;
if (zeta(mid) < k) //尾零少于目标值
l = mid + 1;//移动左边界
else r = mid;//移动右边界,找第一个满足条件值(也就是满足条件的区间左边界)
}
return r ;
}
标签:help,int,求质,mid,long,ans,阶乘,LeetCode 来源: https://www.cnblogs.com/929code/p/16631868.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。