用斯特林數解決階乘位數問題(很有用

2021-09-02 07:22:01 字數 689 閱讀 6303

利用斯特林(stirling)公式的進行求解大數階乘的位數。下面是推導得到的公式:res=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 ); 當n=1的時候,上面的公式不適用,所以要單獨處理n=1的情況!有關斯特林(stirling)公式及其相關推導,這裡就不進行詳細描述,有興趣的話自己可以做更多了解。這種方法速度很快就可以得到結果。

fresher自從學會階乘概念以後,越來越著迷,每天都想著階乘的各種巧妙應用及其求解。有一天,fresher正在和要好的同學討論天底下最大的資料可能有多少位?於是就有一位數學較好的同學提出了乙個問題:當n較大時,雖然求解其階乘的具體值比較困難,但我們應該有方法知道n!的量級吧,也就是說n!在十進位制表示法下有多少位。假設現在需要求解n!的十進位制位數,您可以幫fresher想個奇妙的方法求解嗎?

乙個正整數m(m<=1000000)

乙個正整數n,代表m!的十進位制表達法的位數

5
3
這個方法只能解決小一點的數,因此不推薦使用這種方法

#include#includeint main()

但是當資料很大時,上面的方法就不能用了,下面有更厲害的方法

Big Number階乘位數計算 斯特林公式

題目大致意思是輸入乙個t,然後接下來t行中輸入n並計算每一行中n的階乘的位數 解題思路 如果此題不是大數的話可以用對數函式性質 log10 1 2 3 4 5.log10 1 log10 2 附上 注意sum是double int main if n 1 sum 1 cout 向上取整函式 retu...

n階乘,位數,log函式,斯特林公式

一.log函式 標頭檔案 include 使用 引入 include 以e為底 log exp n 以10為底 log10 n 以m為底 log n log m 重點 log 與log10 不是相同的函式 double log double x 計算乙個數字的自然對數 double log10 do...

A 不凡的夫夫(階乘位數 斯特林公式)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 夫夫有一天對乙個數有多少位數感興趣,但是他又不想跟凡夫俗子一樣,所以他想知道給乙個整數n,求n!的在8進製下的位數是多少位。第一行是乙個整數t 0示例1 3 425 2...