不学不知道,做过暑假作业就会了。
[x=10^{log_{10}x}
]
[x^x=(10^{log_{10}x})^x=10^{xlog_{10}x}
]
因为是达到或超过,所以指数上取整加一即是位数。
然而 (x) 的范围比较大,直接枚举不行,要二分。
时间复杂度 (O(log n))。
code:
#include<bits/stdc++.h>
using namespace std;
#define Db double
int main()
{
int n,l=0,r,mid;
cin>>n;
r=n;
while(l<r)
{
mid=(l+r)>>1;
if(ceil(log10(mid)*Db(mid))>=n-1)r=mid;
else l=mid+1;
}
cout<<l;
return 0;
}