尾部的零

題目:

設計一個算法,計算出n階乘中尾部零的個數算法

樣例:

$11! = 39916800$,所以應該返回 2設計

思路:

這是一個數學問題,十進制尾數獲得0的只有$2*5$,將階乘的每一個因素分解質因數,明顯獲得2的數量多於5的數量,因此,這個問題就變成了有多少個5的問題。
能夠是5,25,125...爲何這樣?好比$26!$:25其實能夠分解成2個5相乘,而$26/5$只計算了一個5,所以還要再加$26/25$$.code

參考思路:

class Solution {
public:
    /*
     * @param n: A long integer
     * @return: An integer, denote the number of trailing zeros in n!
     */
    long long trailingZeros(long long n) {
        // write your code here, try to do it without arithmetic operators.
        /*這是一個數學問題,十進制尾數獲得0的只有2*5,將階乘的每一個因素分解質因數,明顯獲得2的數量多於5的數量,因此,這個問題就變成了有多少個5的問題。能夠是5,25,125...爲何這樣?好比26!:25其實能夠分解成2個5相乘,而26/5只計算了一個5,所以還要再加26/25.*/
        long long sum = 0;
        long long t=5;
        while(t<=n){
            sum += n/t;
            t = 5*t;
        }
        return sum;
        
        
    }
};
相關文章
相關標籤/搜索