bzoj3000 Big Number 斯特林公式

2021-08-29 04:03:14 字數 1223 閱讀 4314

給你兩個整數n和k,要求你輸出n!的k進製的位數。

對於100%的資料,有2≤n≤2^31, 2≤k≤200,資料組數t≤200。

顯然答案就是log⁡k

(n!)

\log_k\left(n!\right)

logk​(

n!) ,然後就不會做了otz

斯特林公式:n!≈

2πn(

ne)n

n!≈2πn

​(en

​)n

於是有ans

≈log⁡k

[2πn

(ne)

n]

ans≈

logk​[

2πn​

(en​

)n]≈12

log⁡k(

2πn)

+n

(log⁡k

n−

log⁡ke

)≈2

1​logk​(

2πn)

+n(logk​

n−logk​e

)log可以換底,其中pi=acos(-1),e=exp(1)

#include

#include

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

typedef

long

long ll;

const

double pi=

acos(-

1);const

double e=

exp(1)

;const

double eps=

1e-7

;int

main

(void

)printf

("%lld\n",1

+(ll)tmp)

;continue;}

ll res=0;

res=eps+

0.5*

log(

2.0*pi*n)

/log

(k)+n*

(log

(n)-

log(e))/

log(k)

;printf

("%lld\n"

, res+1)

;}return0;

}

BZOJ 3000 Big Number 數學演算法

題目大意 求n 在k進製下的位數 即stirling公式 資料範圍小就暴力,資料範圍大套用stirling公式 注意先利用log來避免數字過大而失精 最後答案要開long long include include include include include using namespace std...

斯特林公式 Big Number

big number pro blem desc ript io n colorproblem description proble mdes crip tion i np ut colorinput inpu tinput consists of several lines of integer ...

Big Number階乘位數計算 斯特林公式

題目大致意思是輸入乙個t,然後接下來t行中輸入n並計算每一行中n的階乘的位數 解題思路 如果此題不是大數的話可以用對數函式性質 log10 1 2 3 4 5.log10 1 log10 2 附上 注意sum是double int main if n 1 sum 1 cout 向上取整函式 retu...