首页 > 代码库 > [leetcode] Factorial Trailing Zeroes

[leetcode] Factorial Trailing Zeroes

题目:(Math)

Given an integer n, return the number of trailing zeroes in n!.

Note: Your solution should be in logarithmic time complexity.

 

题解:


首先列几个例子找一找规律。

然后发现

5!有一个0,

10!有两个0,

15!有三个0,

20!有四个0,

25!有六个0,。

可以看出当n大于等于5的时候就能产生后缀的0,因为5*2=10.而2又肯定不会缺因为只要有偶数就有2.

所以我们只要统计n!包含5的数目就可以。

一开始我以为只要n/5 就可以。后来发现例如25,里面包含了俩个5,25=5*5.所以发现5的总数 等于n/5 后的数再除以5 直到其小于5.

public class Solution {    public int trailingZeroes(int n) {        if(n<4)          return 0;                  int res=0;        while(n>=5)        {            res+=n/5;            n=n/5;        }        return res;    }}

 

[leetcode] Factorial Trailing Zeroes