Leetcode 172 階乘後的零(Java實現)
阿新 • • 發佈:2020-12-13
題目描述:
分析:
一個尾數不為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;
}
}
結果: