時間限制: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#includeview code#include
using
namespace
std;
intmain()
return0;
}
數的長度 斯特林公式的運用
時間限制 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 ...