時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:1 描述
n!階乘是乙個非常大的數,大家都知道計算公式是n!=n*(n-1)······*2*1.現在你的任務是計算出n!的位數有多少(十進位制)?
輸入
首行輸入n,表示有多少組測試資料(n<10) 隨後n行每行輸入一組測試資料 n( 0 < n < 1000000 )
輸出對於每個數n,輸出n!的(十進位制)位數。
樣例輸入
31332000
樣例輸出
11130271
**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));
我相信我不平凡!!
NYOJ 數的長度(斯特林公式的應用)
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述n!階乘是乙個非常大的數,大家都知道計算公式是n n n 1 2 1.現在你的任務是計算出n!的位數有多少 十進位制 輸入首行輸入n,表示有多少組測試資料 n 10 隨後n行每行輸入一組測試資料 n 0 n 1000000 輸出對...
斯特林公式
斯特林公式是一條用來取n階乘近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特靈公式十分好用。斯特林公式可以用來估算某數的大小,結合lg可以估算某數的位數,或者可以估算某數的階乘是另乙個數的倍數。stirling公式的意義在於 當n足夠大時,n 計算起來十分困難,雖然有很多關...
斯特林公式
斯特林公式的常見表示形式 顯而易見,這個公式主要是用來求近似的階乘的值的,在競賽中往往只採用第乙個形式,其精確度已經足夠用來求階乘位數了.lg n lg 2 n 2 n lg n lg e 這個公式就是圖中第乙個式子左右同時求對數得到的.不難發現,10x,10 x 1 之間囊括了所有長度為x 1的數...