問題:n的階乘(n!)中的末尾有多少個0?
例如:n = 5,n! = 120.末尾有1個0.
分析:想到這個問題,有人可能第一反應就是現求出n!,然後再根據求出的結果,最後得出n!的末尾有多少個0。但是轉念一想,會不會溢位,等等。
其實,從"那些數相乘可以得到10"這個角度,問題就變得比較的簡單了。
首先考慮,如果n的階乘為k和10的m次方的乘積,那麼n!末尾就有m的0。如果將n的階乘分解後,那麼
n的階乘可以分解為: 2的x次方,3的y次方,4的5次z方,.....的成績。由於10 = 2 * 5,所以m只能和x和z有關,每一對2和5相乘就可以得到乙個10,於是m = min(x,z),不難看出x大於z,因為被2整除的頻率比被5整除的頻率高的多。所以可以把公式簡化為m=z.
由上面的分析可以看出,只要計算處z的值,就可以得到n!末尾0的個數
方法一要計算z,最直接的方法就是求出n的階乘的所有因式(1,2,3,...,n)分解中5的指數。然後求和
int fun1(
int n)
}return num;
}
方法二:
z = n/5 + n /(5*5) + n/(5*5*5).....知道n/(5的k次方)等於0
公式中 n/5表示不大於n的數中能被5整除的數貢獻乙個5,n/(5*5)表示不大於n的數中能被25整除的數再共享乙個5.......
int fun2(
int n)
return num;
}
n 階乘末尾有多少個零0
題目 初階 1 2 3 100 求結果末尾有多少個零。高階 n的階乘末尾有多少個0 分析 一般類似的題目都會蘊含某種規律或簡便方法的階乘末尾乙個零表示乙個進製,則相當於乘以10而10 是由2 5所得,在1 100當中,可以產生10的有 0 2 4 5 6 8 結尾的數字,顯然2是確定的,因為4 6 ...
N 末尾有多少個零
題目一 210 最後結果有幾個零。請自己思索10分鐘以上再看解釋 凡是這種題目必有規律可言,關鍵是你找到這個規律的恆心。可採用笨拙的方法思考。1 1 無0 2!2 1!2 無0 3!3 2!6 無0 4!4 3!24 5!5 4 120 有了乙個零 思考這個0是怎麼出現的 5與乙個偶數相乘得到的結果...
N 末尾有多少個零
題目一 210 最後結果有幾個零。請自己思索10分鐘以上再看解釋 凡是這種題目必有規律可言,關鍵是你找到這個規律的恆心。可採用笨拙的方法思考。1 1 無0 2!2 1!2 無0 3!3 2!6 無0 4!4 3!24 5!5 4 120 有了乙個零 思考這個0是怎麼出現的 5與乙個偶數相乘得到的結果...