• P2759 奇怪的函数


    题目描述

    使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少?

    输入输出格式

    输入格式:

     

    一个正整数 n

     

    输出格式:

     

    使得 x^x 达到 n 位数字的最小正整数 x

     

    输入输出样例

    输入样例#1:
    11
    输出样例#1:
    10

    说明

    n<=2000000000

     

    题解:二分答案

    实质是求

    x^x>=10^(n-1),

    log(x^x)>=log(10^(n-1))

    x*log(x)>=n-1

    因为左边是单调的 二分即可。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int l,r,ans,n;
    bool check(int x){
        if(x*log(x)/log(10)>=n-1)return 1;
        return 0;
    }
    int main(){
        scanf("%d",&n);
        l=0;r=2000000000;
        while(l<=r){
            int mid=(l+r)>>1;
            if(check(mid)){
                ans=mid;
                r=mid-1;
            }
            else l=mid+1;
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    平板涂色
    速算游戏_NOI导刊2011提高(04)
    信息学奥赛一本通——配套刷题网站
    求10000以内n的阶乘
    大整数的因子
    计算2的N次方
    大整数加法
    带余除法
    A/B 高精度
    A*B 高静度
  • 原文地址:https://www.cnblogs.com/zzyh/p/7507254.html
Copyright © 2020-2023  润新知