尾部零的個數

2021-08-16 04:57:06 字數 512 閱讀 6713

題目:設計乙個演算法,計算出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 ...