n!末尾0的個數

2021-08-18 17:43:36 字數 1054 閱讀 1561

肯定不能直接求出 n! 然後在計算後邊有多少個0

因為 1000000!  的位數就是 5565709

對於 n! 的末尾如果有乙個 0 的話,必然有乙個 5 與其對應著

所以就是找從 1 到 n 這些數的約數(因子)中有多少個 5

它們有幾個 5,   n! 末尾就有幾個0

令f(x)表示正整數x末尾所含有的「0」的個數,則有:

f(n!) =[n/5]+[n/25]+[n/125]+[n/625]+......

表示向下取整

顯然:

當0 < n < 5時,f(n!) = 0;

當n >= 5時,f(n!) = k + f(k!), 其中 k = n / 5(取整)。

第一種,遞迴的形式

#includeint cal(int n)

int main()

return 0;

}

第二種,用迴圈來解決

#include#includeint main()

printf("%d\n",sum);

} return 0;

}

也可以這樣寫:

#includeint main()

return 0;

}

參考:題目練習:hdu1124

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個數

分析 一般類似的題目都會蘊含某種規律或簡便方法的,階乘末尾乙個零表示乙個進製,則相當於乘以10而10 是由2 5所得,在1 100當中,可以產生10的有 0 2 4 5 6 8 結尾的數字,顯然2是足夠的,因為4 6 8當中都含有因子2,所以都可看當是2,那麼關鍵在於5的數量了那麼該問題的實質是要求...

求n的階層末尾0的個數

統計n的階層的末尾0的個數 思路 1 設 n!k 10 m,且k不能被10整除,那麼n!末尾有 m個0 2 再考慮對n!進行質因數分解,n!2 x 3 y 5 z 因為 10 2 5,所以 m 只跟 x 和 z 有關,每一對2和5得到乙個10 於是m min x,z 不難看出x顯然大於z,因為能被2...