我们有斯特灵近似公式
然后就可以快速求了
http://blog.csdn.net/ws_yzy/article/details/50725649
公式:
n!≈ sqrt(2πn)*((n/e)^n)
注意精度
#include<cstdio>
#include<cstdlib>
#include<cmath>
using namespace std;
#define ld long double
#define ll long long
const
ld pi=acos(-1);
const
ld e=exp(1);
int main()
{
ll n;
int d;
while(scanf("%lld%d",&n,&d)!=EOF)
{
if(n<=10000)
{
ld ans=0;
for(int i=1;i<=n;i++)
ans+=log(i);
ans/=log(d);
ans=ceil(ans+1e-10);
printf("%lld\n",(ll)ans);
}
else
printf("%lld\n",1+(ll)((0.5*log(2*pi*n)+n*log(n)-n*log(e))/log(d)));
}
}