題目:設計乙個演算法,計算出n階乘中尾部零的個數
思路:最開始的時候,想到的是去求階乘中2和5的倍數的個數,之後想到了5的倍數的個數算清楚,2的就不需要了(因為5的倍數的個數一定比2的倍數的個數少,而10的個數又取決於二者之間更少的那個)
但是這樣的演算法複雜度依舊很高,在稍微改變演算法以後,先求出5的倍數有多少個,再求5的平方的倍數有多少個......就可以解出問題,而且複雜度不是很高。
**:python:
def fun(n):
num=0
while(n>0):
num+=n//5 #算出5的倍數有多少個
n/=5 #n除以五,相當於去求5^2的倍數
return int(num)
a=fun(11)
print(a)
c++:
class solution
return num;
}};
計算n階乘中尾部零的個數
本來覺得問題挺容易的,不打算記錄,誰知道一不小心,還真沒做出來。最終憑藉 樸實 的演算法思想解決了問題,但是其中的曲折還真是汗顏。科學的思維指導確實必不可少,野路子 的樸素的戰鬥理論不論是效率還是後續的演算法演進都經不起考驗。這裡只是記錄一下自己最近兩天對此問題的一些想法,目前只能說是解決了問題,並...
LintCode 尾部的零
尾部的零 設計乙個演算法,計算出n階乘中尾部零的個數 樣例 11 39916800,因此應該返回 2 挑戰 o logn 的時間複雜度 solutioin factorials and trailing zeroes 1.計算 23 有多少個尾0 23 1 2 3 4 5 6 7 8 9 10 11...
lintcode尾部的零
設計乙個演算法,計算出n階乘中尾部零的個數 class solution param n an integer return an integer,denote the number of trailing zeros in n deftrailingzeros self,n write your ...