LeetCode.M172
题目:
题目大意:
如图所示。
数据范围:
如图所示
思路:
只需要考虑1到n所有数中质因子5的个数,因为质因子2的个数一定大于质因子5的个数。
求1到n所有数中质因子p的个数:只需 n / p + n / (p^2) + n / (p^3) + …即可。
转化为代码可以这样求:n / p + (n / p) / p + ((n / p) / p) / p + …,即每次令 n = n / p ,ans += n,直到n = 0时结束。
来源:LeetCode
代码:
class Solution {
//求1到n所有数中质因子p的个数,这里p为5
public int trailingZeroes(int n) {
int ans = 0;
while (n != 0){
n = n / 5;
ans += n;
}
return ans;
}
}
public class Main {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.trailingZeroes(5));
}
}
时空复杂度分析等:
-
时间复杂度 : O(logn)
-
空间复杂度 : O(1)