石油大 HD階乘 求階乘末尾0的個數

2021-10-11 03:24:03 字數 727 閱讀 7501

想法實現

n的階乘定義為n! = n ∗ (n − 1) ∗ (n − 2) ∗ … ∗ 1。

n的雙階乘定義為n!! = n ∗ (n − 2) ∗ (n − 4) ∗ … ∗ 2或n!! = n∗ (n − 2) ∗ (n − 4) ∗ … ∗ 1,取決於n的奇偶性。

但是階乘的增長速度太快了,所以我們現在只想知道n!和n!!末尾的0的個數。

乙個正整數n, n ≤ 107

兩個整數, 分別為n!和n!!末尾0的個數。

階乘過程中, 出現5的倍數之前一定會出現2的倍數(說明有了乙個10), 反之,則不然

所以題目轉化成了求階乘過程中, 有幾個因子5

雙階乘只是換了種形式, 本質不變

#include

#include

using

namespace std;

int n, cnt1, cnt2;

void

solve1

(int n)

}void

solve2

(int n)

}int

main()

石油大 HD階乘 求階乘末尾0的個數

想法實現 n的階乘定義為n n n 1 n 2 1。n的雙階乘定義為n n n 2 n 4 2或n n n 2 n 4 1,取決於n的奇偶性。但是階乘的增長速度太快了,所以我們現在只想知道n 和n 末尾的0的個數。乙個正整數n,n 107 兩個整數,分別為n 和n 末尾0的個數。階乘過程中,出現5的...

演算法 階乘 n 求 末尾 0 的個數

最近在網上看到乙個這樣的演算法.就寫了出來.n 末尾有多少個 0 取決於從 1 到 n 的各個數的因子中 2 和 5 的個數。又因為 2 的個數遠遠多於 5 的個數,所以只要求出這當中 5 的個數即可。不斷地用 n 除以 5,直到結果為 0,將中間的結果都加起來,即可得到因子 5 的個數。例如,10...

n的階乘問題 階乘位數 階乘末尾0的個數

初來乍到,望高手指教!原有解決n的階乘的方式 迭代,如果是大資料的話,迭代會吃掉大量記憶體,導致記憶體溢位 用平時的迭代解決n的階乘問題 在計算21的階乘時,結果已然為負數,超出整型資料表示範圍。計算34的階乘是,結果已然為0 此段 將n的階乘問題解決,實現無限大數的階乘!無限 兩字有點牽強,數字太...