这道题目并不难,只要知道了诀窍其实很容。
阶乘,或者说乘法,为什么会产生0,就是因为有2和5的存在,那么只要对输入n进行分解,有多少个2和有多少5就能知道最后的数中会有多少个0。进一步简化,简单地根据规律就可以知道质因子2的数量肯定是多余质因子5的,因为每出现一个5,就起码在之前出现了两个2,那么这个问题就简化为求输入n的质因子中有多少个5。
解法:
* 每隔5个数,出现一次5,也就是n / 5
* 每隔25个数,额外出现一次5,也是就是n / 25
* 每隔125个数,额外出现一次5,也就是n / 125
* ……
以此类推,所以代码如下:
java
public class Solution { public int trailingZeroes(int n) { int x = 5; int result = 0; while (n >= x) { result += n / x; if (x > Integer.MAX_VALUE / 5) { break; } x *= 5; } return result; } }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。