1. 程式人生 > 其它 >Leetcode 172 階乘後的零(Java實現)

Leetcode 172 階乘後的零(Java實現)

技術標籤:LeetCodeleetcodejava

題目描述:
題目描述


分析:
一個尾數不為0的數要有一個尾數為0,需要乘以10,而10又是2*5得來的。(思考一下,也會感覺會和2,5有關係)
拿兩個數分析一下,如下圖。
在這裡插入圖片描述

圖中規律:有2的因子的數每隔2個數就有1次。
有5的因子的數每隔5個數就有1次。
又10 = 2*5。所以只要找出1到n這n個數中含有5的個數,因為2比5多,2和5配對之後,剩餘2的個數是會大於0。
剛好5!有一個尾數為0,剛好對應有一個5.
13!有兩個尾數為0,剛好對應5的個數是2。
所以這裡的實質就是計算階乘中每個數可以分解出5的數目的總和。

程式碼:

class Solution
{ public int trailingZeroes(int n) { int count = 0; for(int i = 1;i <= n;i++){ int num = i; while(num >=5){ int mod = num % 5; if(mod == 0){ count++; num = num /5; }
else{ break; } } } return count; } }

結果:
結果