题解 P2759 【奇怪的函数】

· · 题解

小学生大家普及点公式

log_a(b)$表示$a^x=b

那么

$in(a^b)=b \times in(a)

其实in(x)我也不知道是什么东西,听老师说是log_e(x),然而e又是什么东西......不管了,反正能用就行。(在c++里写作log(x),要声明cmath库函数)

构造不等式:x^x>=10^{(n-1)}

那么in(x^x)>=in(10^{(n-1)})

x \times in(x)>=(n-1) \times in(10)

然后二分枚举x,ac代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,i,l,r,m,ans;
    double xyq;
    cin>>n;
    xyq=(n-1)*log(10); //不等式右边的东西。
    l=1;
    r=2000000000; //n的范围。
    while(l<r){
        m=l+r>>1; //>>1表示在二进制意义下右移一位,相当于除以二。
        if(m*1.0*log(m)>=xyq){ //整数*1.0可以转换为浮点数。
            ans=m; //记录答案。
            r=m-1;
        }else{
            l=m+1;
        }
    }
    cout<<ans;
    return 0;
}