NYOJ 數的長度(斯特林公式的應用)

2022-03-13 17:28:41 字數 807 閱讀 5129

時間限制:3000 ms  |  記憶體限制:65535 kb

難度:1

描述n!階乘是乙個非常大的數,大家都知道計算公式是n!=n*(n-1)······*2*1.現在你的任務是計算出n!的位數有多少(十進位制)?

輸入首行輸入n,表示有多少組測試資料(n<10) 隨後n行每行輸入一組測試資料 n( 0 < n < 1000000 )

輸出對於每個數n,輸出n!的(十進位制)位數。

樣例輸入

313

32000

樣例輸出

1

1130271

**

acm教程

上傳者rooot

此題的最佳解法為:斯特林解法何為斯特林,在下也不好說,是2023年前的一位數學家提出來的構想:

如何快速求出n!的位數呢? 數學上的公式為:

strlen(n!)=log10(√2*π*n)+n*log10(n/e);

所以只需要將其轉化為計算機上的公式即可:

其中π=2*acos(0.0)或者π=4*atan(1.0);

e=exp(1);

所以用計算機敲出來為:    length=log10(sqrt(4*acos(0.0)*n))+n*log10(n/exp(1));

故**如下:

#include#include

#include

using

namespace

std;

intmain()

return0;

}

view code

數的長度 斯特林公式的運用

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 n!階乘是乙個非常大的數,大家都知道計算公式是n n n 1 2 1.現在你的任務是計算出n!的位數有多少 十進位制 輸入 首行輸入n,表示有多少組測試資料 n 10 隨後n行每行輸入一組測試資料 n 0 n 1000000 輸...

1058 N的階乘的長度(斯特林公式)

1058 n的階乘的長度 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 輸入n求n的階乘的10進製表示的長度。例如6 720,長度為3。input 輸入n 1 n 10 6 output 輸出n的階乘的長度 input示例 6 output示例 3斯特林公式...

利用斯特林 Stirling 公式求解n 的位數

利用斯特林 stirling 公式求解n 的位數 易知整數n的位數為 lg10 n 1.用stirling公式計算n 結果的位數時,可以兩邊取對數,得 log10 n log10 2 pi n 2 n log10 n e 故n 的位數為 res log10 2 pi n 2 n log10 n e ...