题目
设计一个算法,计算出n阶乘中尾部零的个数
样例
11! = 39916800,因此应该返回 2
代码
public class Solution {
/*
* @param n: An integer
* @return: An integer, denote the number of trailing zeros in n!
*/
public long trailingZeros(long n) {
// write your code here, try to do it without arithmetic operators.
long count = 0;
for(int i = 1; Math.pow(5,i) <= n; i++) {
count += n / (long)Math.pow(5,i);
}
return count;
}
}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
分析
代码部分不难,重要的是数学部分的理解。举例
1000/5 + 1000/25 + 1000/125 + 1000/625
= 200 + 40 + 8 + 1
= 249(个)
本文介绍了一种高效计算n的阶乘(n!)结果中尾部零的数量的算法,并通过具体示例说明了该算法的工作原理及实现过程。
425

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



