1. 程式人生 > >給定一個整數n,返回n!中的尾隨零數。

給定一個整數n,返回n!中的尾隨零數。

本題源自leetcode  172

=------------------------------------------------------------------------------

思路:求0來自10。10來自2 x 5, 我們需要考慮所有5和2的產品。喜歡4×5 = 20 ...所以,如果我們把所有5的數字作為一個因子,我們將有足夠多的偶數與他們配對,得到10的因子

1到23之間有多少個5的倍數?有5,10,15和20,是5的四倍。與偶數因素2相配,這就是四個因子10,所以:23!有4個零。

例二
從1到100的數字有多少個5?因為100÷5 = 20,所以在1到100之間有5個20的倍數。但是等待,實際上25是5×5,因此25的每個倍數具有5的額外因子,例如

25×4 = 100,引入了額外的零。那麼,我們需要知道有多少25的倍數在1到100之間呢?由於100÷25 = 4,因此在1到100之間有四個倍數25。最後,我們得到20 + 4 = 24的尾數為100!
上面的例子告訴我們,我們需要關心5,5×5,5×5×5,5×5×5×5 ....

程式碼:

int trailingZeroes(int n) {
        int res = 0;
        while(n){
            n /= 5;
            res += n;
        }
        return res;
    }