View on GitHub

Wenchong Huang

旧博客,文章搬迁完后删除

返回首页 返回专题

【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;
}