【BZOJ3000】Big Number 题解
首先明确题目要我们求的是 logk(n)+1
然后我们有一个斯特林公式:
利用它来化简我们要求的柿子
然后O(1)直接算就好了
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const double pi=acos(-1);
const double e=exp(1);
inline double log(double n,double k){return log(n)/log(k);}
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
LL ans=(LL)(log(2*pi*n,k)*0.5+n*log(n,k)-n*log(e,k))+1;
printf("%lld\n",ans);
}
return 0;
}