數論 斯特靈公式

2021-08-16 17:42:25 字數 1237 閱讀 9093

上面那條就是斯特靈公式,在計算n!的時候,這條公式就近似等於n!,其中n越大,兩個數值越接近

1、估算n的階層(這個作用較小,畢竟最多儲存在long long中)

2、估算n!的位數,其中 要知道一條數學公式 log10(num)+1等於num的位數

3、估算n!是另乙個數的多少倍

下面直接來一道例題,來看看這個公式要怎樣用

例題:problem description

input

input consists of several lines of integer numbers. the first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 10

7 on each line.

output

sample input

21020

sample output

719

題目大意:

就是要求你輸入乙個數,求它的階層的位數

分析:10^7次方的階層,直接模擬是不可能實現的了,那麼只有用數學公式:

1、res = (int)log10(n!)+1 = (int)log10(1*2*3...*n)+1 

= int ( log(10)1 + log10(2) + log10(3) + ... + log10(n) ) + 1;

2、分解斯特靈公式,res = (int)log10(n!)+1 = (int)log10(√(2πn) * (n/e)^(n))+ 1

= (int)log10(2*n*pi)/2+n*log10(n/e) + 1

題解:

#include #include #include using namespace std;

const double pi = acos(-1.0);

const double e = exp(1);

int main()

return 0;

}

知道公式之後這些題就變得很清晰了,但是目前我只找到兩道用這個公式的題目,下面貼出

牛客 不凡的夫夫

題解就不貼了,很簡單10行**左右就可以做出來了

如果有眼前一亮的題目或者解答歡迎和樓主討論 ε=ε=ε=┏(゜ロ゜;)┛ 樓主的qq486291187.

斯特靈(Stirling)數

遞推式 s n 1,k s n,k 1 n s n,k 解釋 考慮第n 1個元素 1 單獨形成迴圈排列,剩下的有s n,k 1 種方法 2 和別的元素一起形成迴圈排列,n個元素形成迴圈排列的方法數是s n,k 第n 1個可以放在第i個元素左邊,共有n種放法,一共是n s n,k include in...

斯特靈數 stiriling

第一類stiriling數 先給出定義 s n,k 個元素的專案分作 個環排列 的方法數目 此時我們就可以忽略排列的開始元素 舉個例子 遞推公式為 s n,k n 1 s n 1,k s n 1,k 1 解釋 當我們考慮到第n個物品的時候 1.將第n個物品單獨放置 s n 1,k 1 2.將第n個物...

斯特靈數stirling

count the buildings 不管是從左邊看還是從右邊看,視線總是會被中間最高的給擋住 所以我們把左邊和右邊分組來看。對於某一邊,我們確定出能夠看見的樓房,那麼不能夠看見的樓房就可以任意排列 我們把能看見的樓房,與下乙個能看到的樓房 不包括下乙個樓房 之間的樓看為一組 可以考慮現將最高的拿...