zoukankan      html  css  js  c++  java
  • 奇怪的函数

    【题目描述】

    求出使得X^X达到或超过N位数字的最小正整数X是多少。

    【输入描述】

    输入一个正整数N。

    【输出数据】

    输出使得X^X达到或超过N位数字的最小正整数。

    【输入样例】

    11

    【输出样例】

    10

    【数据范围及提示】

    N <= 2000000000。

    源代码:
    
    #include<cstdio>
    #include<cmath> //包含trunc()以及log()。
    int n,ans,left=1,right=250000000; //题中所给的最大数据经验证不会超过此值。
    int main() //二分答案。
    {
        scanf("%d",&n);
        while (left<=right)
        {
            int t=(left+right)>>1,num=trunc(t*(log(t)/log(10))+1);
            if (num>=n)
            {
                  right=t-1;
                  ans=t;
            }
            else
              left=t+1;
        }
        printf("%d",ans);
        return 0;
    }
    
    /*
        C++取整函数:
            1.向上取整:ceil()
            2.向下取整:floor()
            3.截取整数:trunc()
            4.四舍五入:(int)(N+0.5)
    */
    
    /*
        位数:
            ln(N)
            C++程序中表示为:log(N)/log(10)+1。 
        延伸:
            以x为底N的对数在C++程序中表示为:log(N)/log(x)。
    */
  • 相关阅读:
    第五次团队作业
    第三次个人作业
    第一次编程作业
    自我介绍
    个人总结
    第三次个人作业
    第一次结对作业
    第二次作业
    第一次博客作业
    Alpha总结
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5527838.html
Copyright © 2011-2022 走看看