题目:
给定一个整数 n ,返回 n! 结果中尾随零的数量。
提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1
leetcode.cn/problems/fa…
解法:
10出现的次数可以转换为2 * 5出现的次数,2的次数肯定比5多,考虑5出现的次数即0出现的次数。
题目是求1~n的所有数的质因数中,5出现的次数:
1*5 2*5 3*5 4*5 5*5 6*5 7*5 8*5 9*5
2*5*5 3*5*5 4*5*5 5*5*5 6*5*5 7*5*5 8*5*5 9*5*5
2*5*5*5 3*5*5*5 4*5*5*5 5*5*5*5 6*5*5*5 7*5*5*5 8*5*5*5 9*5*5*5
... n
n是整数,newN = n / 5会向下取整。
5 的倍数有 n / 5 个
25 的倍数有 n / 25 个
125 的倍数有 n / 125 个
以此类推
第一次n/5得到了因数中有1个5的数字数目
第一次n/5又得到了因数中有1个5的数字数目
...
func trailingZeroes(n int) int {
ans := 0
for n != 0 {
ans = ans + n / 5
n = n / 5
}
return ans
}