Given an integer n, return the number of trailing zeroes in n!.
Example 1:
Input: 3 Output: 0 Explanation: 3! = 6, no trailing zero.
Example 2:
Input: 5 Output: 1 Explanation: 5! = 120, one trailing zero.
class Solution { public int trailingZeroes(int n) { // return n==0 ? 0 : n/5 + trailingZeroes(n/5); int res=0; while(n>0){ res += n/5; n/=5; } return res; } }
看见没有,一行就能搞定??我感觉我像个弱智
例1
n=15
。那么在15!
中 有3
个5
(来自其中的5
, 10
, 15
), 所以计算n/5
就可以。
例2
n=25
。与例1相同,计算n/5
,可以得到5
个5
,分别来自其中的5, 10, 15, 20, 25
,但是在25
中其实是包含2
个5
的,这一点需要注意。
所以除了计算n/5
, 还要计算n/5/5, n/5/5/5, n/5/5/5/5, ..., n/5/5/5,,,/5
直到商为0,然后就和,就是最后的结果。
作者:ab409
链接:https://www.jianshu.com/p/211618afc695
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。