Factorial vs Power log数学题
题意:
找到最小的n使得n!>a^n
解析:
两边同时取log,得log(1)+…log(n)>n*log(a)
用L数组存一下log的前缀和,二分找ans
代码:
#include<cstdio>
#include<cmath>
#define F double
#define N (int)(1e7+10.0)
F L[N];
int main(){
L[0]=0;for(int i=1;i<N-10;i++)L[i]=L[i-1]+log(i);
int t;scanf("%d",&t);while(t--){
int a;scanf("%d",&a);
F b=log(a);
int l=1,r=1e7;
while(r-l>1){
int mid=r+l>>1;
if(L[mid]>mid*b)r=mid;
else l=mid;
}
printf("%d\n",l+1);
}
}