原题如下
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
分析,N的阶乘 n!=5^m * 2^k * ... ,因此只要我们找出m和k,并且取最小值就是末尾0的个数。进一步分析我们发现2的倍数出现的频率比5出现的高,也就是说k>m. 我们只要找出m也就是所需要的答案。
如下是Java实现版本:
public class Solution {
public int trailingZeroes(int n) {
int rvl = 0;
while(n > 0){
rvl += n/5;
n = n/5;
}
return rvl;
}
}
计算阶乘尾0数

本文介绍了一种高效计算n!尾部零的数量的方法。通过分析2与5因子的出现频率,确定了只需要关注5的倍数即可。并提供了一个Java实现版本。
1074

被折叠的 条评论
为什么被折叠?



