給定一個整數n,返回n!中的尾隨零數。
阿新 • • 發佈:2019-01-30
本題源自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;
}