奇怪的函数

奇怪的函数

题目描述

使得 \(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;
}
posted @ 2023-08-30 14:48  LongDz  阅读(30)  评论(0)    收藏  举报