码迷,mamicode.com
首页 > 其他好文 > 详细

好题收集(2) 奇怪的函数(数学)

时间:2018-02-07 19:37:23      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:oda   out   ddt   mbg   知识   smb   表示   二分答案   repeat   

奇怪的函数

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

Hint
乍一看是一道数学题
其实就是一道数学题
$a$ 在 $b$ 进制下的位数 $p$ 的计算公式为 $p=\lfloor log_b a \rfloor+1$
其实很好理解:
设$\lfloor x \rfloor$表示不超过 $x$ 的最大整数,若 $n=(a_k,a_k-1,…a_1,a_0)_b,a_k≠0$,
则$$b^k≤n<b^{k+1} ⇒k≤log_bn<k+1$$
即$k=\lfloor log_bn \rfloor$,总位数 $p=k+1$
所以$x^x$的位数就是$\lfloor lg{x^x} \rfloor+1$,运用对数知识就是$\lfloor xlgx \rfloor+1$
然后考虑到对数函数是单调的,所以可以用二分答案

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define LL long long
using namespace std;
LL n,l=1,r=2e9;
int main(){

    scanf("%lld",&n);
    while(l<r){
        LL mid=(l+r)>>1,len=(LL)(mid*log10(1.0*mid))+1;
        if(len<n) l=mid+1;
        else r=mid;
    }
    cout<<l<<endl;
    return 0;
}
?

好题收集(2) 奇怪的函数(数学)

标签:oda   out   ddt   mbg   知识   smb   表示   二分答案   repeat   

原文地址:https://www.cnblogs.com/LonelyRyan/p/8427608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!