【Luogu2759】奇怪的函数(数论)
题面
题目描述
使得 \(x^{x}\)达到或超过 n 位数字的最小正整数 x 是多少?
输入输出格式
输入格式:
一个正整数 n
输出格式:
使得 \(x^x\) 达到 n 位数字的最小正整数 x
输入输出样例
输入样例#1:
11
输出样例#1:
10
说明
n<=2000000000
题解
简单题。。。。
数学题。。。。
位数\(-1=log_{10}^{x^x}=xlog_{10}^x\)
直接二分即可
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
long long n;
int main()
{
cin>>n;n--;
long long l=1,r=2000000000;
long long ans=r;
while(l<r)
{
long long mid=(l+r)>>1;
long double k=(1.0*mid*((long double)log10(mid)));
if(k>=1.0*n)ans=mid,r=mid;
else l=mid+1;
}
printf("%lld\n",ans);
return 0;
}