斯特林公式應用

2021-09-19 09:54:09 字數 819 閱讀 4573

51nod1058

這題讓求n的階乘長度,n範圍到1e6,很明顯會爆long long,那麼就需要乙個公式直接算出結果–斯特林公式,這個公式的作用就是求n階乘的近似值。

我們知道求乙個十進位制數x的位數,log10(x) + 1,

用斯特林公式帶入x,兩邊取對數

可以看出斯特林公式的作用,上式左邊n!會爆,而右邊的每一項都不會爆long long,因為取了對數。這樣就可以算出位數了。

提一下cmath庫里對數函式用法,log10(x)是取以10為底的對數,log(x)是取以e為底的對數。

下面**用了換底公式,避免了不知道e的準確值。

#include

#define inf 0x3f3f3f3f

#define d(x) cout << (x) << endl

using namespace std;

typedef

long

long ll;

const

int mod =

1e9+7;

const

int n =

1e5+10;

const

double pi =

3.1415926

;int n;

intmain()

斯特林公式

斯特林公式是一條用來取n階乘近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特靈公式十分好用。斯特林公式可以用來估算某數的大小,結合lg可以估算某數的位數,或者可以估算某數的階乘是另乙個數的倍數。stirling公式的意義在於 當n足夠大時,n 計算起來十分困難,雖然有很多關...

斯特林公式

斯特林公式的常見表示形式 顯而易見,這個公式主要是用來求近似的階乘的值的,在競賽中往往只採用第乙個形式,其精確度已經足夠用來求階乘位數了.lg n lg 2 n 2 n lg n lg e 這個公式就是圖中第乙個式子左右同時求對數得到的.不難發現,10x,10 x 1 之間囊括了所有長度為x 1的數...

斯特林公式

夫夫有一天對乙個數有多少位數感興趣,但是他又不想跟凡夫俗子一樣,所以他想知道給乙個整數n,求n!的在8進製下的位數是多少位。第一行是乙個整數t 0示例1 3425 2 13 include using namespace std const long double pi 3.141592653589...