分析:一般類似的題目都會蘊含某種規律或簡便方法的,階乘末尾乙個零表示乙個進製,則相當於乘以10而10 是由2*5所得,在1~100當中,可以產生10的有:0 2 4 5 6 8 結尾的數字,顯然2是足夠的,因為4、6、8當中都含有因子2,所以都可看當是2,那麼關鍵在於5的數量了那麼該問題的實質是要求出1~100含有多少個5由特殊推廣到一般的論證過程可得:
所以100!末尾有多少個零為: 100/5+100/25=20+4=24那麼1000!末尾有多少個零呢?同理得: 1000/5+1000/25+1000/125=200+40+8+1=249
#include intmain()
printf(
"the ansert is%d
",res);
return0;
}
n!末尾0的個數
肯定不能直接求出 n 然後在計算後邊有多少個0 因為 1000000 的位數就是 5565709 對於 n!的末尾如果有乙個 0 的話,必然有乙個 5 與其對應著 所以就是找從 1 到 n 這些數的約數 因子 中有多少個 5 它們有幾個 5,n 末尾就有幾個0 令f x 表示正整數x末尾所含有的 0...
N階乘末尾0的個數
輸入乙個正整數n,求n 即階乘 末尾有多少個0?比如 n 10 n 3628800,所以答案為2 輸入為一行,n 1 n 1000 輸出乙個整數,即題目所求要判斷末尾有幾個0就是判斷可以整除幾次10。10的因子有5和2,而在0 9之間5的倍數只有乙個,2的倍數相對較多,所以本題也就轉換成了求n階乘中...
演算法 階乘 n 求 末尾 0 的個數
最近在網上看到乙個這樣的演算法.就寫了出來.n 末尾有多少個 0 取決於從 1 到 n 的各個數的因子中 2 和 5 的個數。又因為 2 的個數遠遠多於 5 的個數,所以只要求出這當中 5 的個數即可。不斷地用 n 除以 5,直到結果為 0,將中間的結果都加起來,即可得到因子 5 的個數。例如,10...