题目来源:
leetcode题目,网址:面试题 16.05. 阶乘尾数 - 力扣(LeetCode)
解题思路:
在不包括自身的情况下,10 只可以分解为 2*5 。显然求阶乘过程中,2 的个数远远多于 5 的个数,因此只需要求 5 的个数即可。
区间 [1,n] 内 5 的倍数的个数为 n/5;区间[1,n] 中 25=5*5 的倍数的个数为 n/25.......因此区间[1,n] 内 5 的个数为 n/5+2*n/25+3*n/75......,代码实现时,通过不断将 n 除以 5 兵累加每次除后的n,得到答案。
解题代码:
class Solution {
public int trailingZeroes(int n) {
int count=0;
while(n!=0){
count+=n/5;
n=n/5;
}
return count;
}
}
总结:
做题时,想到计算 5 的个数了,但遍历 5 的倍数,然后将被倍数循环除 5, 超时了。
看官方题解做出来的。