奇怪的函数
奇怪的函数
题目描述
使得 \(x^x\) 达到或超过 \(n\) 位数字的最小正整数 \(x\) 是多少?
输入格式
一个正整数 \(n\)。
输出格式
使得 \(x^x\) 达到 \(n\) 位数字的最小正整数 \(x\)。
样例 #1
样例输入 #1
11
样例输出 #1
10
提示
对于全部数据,\(1\le n\le 2\times 10^9\)。
分析
采用二分来做,这里有一点数学知识就是:x的位数=lgx+1
代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
int l = 1,r = 1e9;
while(l<r){
int mid = l+(r-l)/2;
if(mid*log10(mid)>=n-1)
r = mid;
else
l = mid+1;
}
cout<<l;
return 0;
}

浙公网安备 33010602011771号