往前翻几个编号相邻的题目翻到了这么一道题,感觉很好奇就做了一下

(upd:我下午问了下出题人做法,他就把题隐藏了……这不太友好啊……所以我补一下题意:)

题意

  给你两个整数 $x$ 和 $y$,求 $x^y$ 和 $y^x$ 的大小关系。输出 $-1$ 表示前者大,$1$ 表示后者大,$0$ 表示一样大。

  $0\le x\le 10^{3000}, -100\le y\le 10^{3000}$

题解

首先特判 $x$ 或 $y$ 为 $0$,$y=-1$ 以及 $y\lt -1$ 的情况。

对于剩下的正常情况,显然幂可以取对数转化为乘数。

即把 $x^y$ 取 $\ln$ 转化为 $y\ln{x}$,$y^x$ 取 $\ln$ 转化为 $x\ln{y}$

然后 $x^y$ 和 $y^x$ 的大小关系等于 $y\ln{x}$ 和 $x\ln{y}$ 的大小关系

移项,可得等于 $\frac{\ln{x}}{x}$ 和 $\frac{\ln{y}}{y}$ 的大小关系

咋一看,$\ln{x}$ 的变化速率显然比 $x$ 小很多啊!那我们是否可以大胆猜测,$x$ 越大,$\frac{\ln{x}}{x}$ 越小呢?

但我们没有给 $x$ 的定义域。

我们直觉上认为 $x$ 的定义域为 $[1,\infty)$ 的整数。

但我们没有证明这个结论,下面用实践来检验一下。

我们画一下 $y=\frac{\ln{x}}{x}$ 的图象

有没有观察到最高点的横坐标为 $e$?

那我们之前猜的那个结论好像就不对了

这是偶然吗?我们把 $log$ 的底数换成 $10$ 画一下看看

再把底数换成 $2$ 看看

为什么无论底数是几,最高点的横坐标都是 $e$?

咱们来脑残证明一波:

首先,换底只会使图象沿 $y$ 轴成比例伸缩,不会改变最高点。因为假设把底数 $a$ 换成 $b$,那根据换底公式可得 $\log_b{x} = \log_a{x}\times \log_b{a}$,$\log_b{a}$ 是个与 $y$ 无关的常数,所以 $y=\frac{\log_a{x}}{x}$ 的图象只沿 $y$ 轴伸长 $\log_b{a}$ 倍,最高点横坐标不变。

但是这个结论是封闭的,即我们需要找到一个 $x$,使得 $y=\frac{\log_a{x}}{x}$ 的图象最高点能通过其它方式求出来。

当 $x=e$ 时就可以证明这个图象的最高点的横坐标是 $e$,证明方法:

考虑求导,分数的导数公式为 $(\frac{u}{v})' = \frac{u'v-uv'}{v^2}$

令 $u=\ln{x}$,$v=x$

$y=\ln{x}$ 的导数为 $y'=\frac{1}{x}$(至于这个核心公式怎么证,您们还是去查吧,这里篇幅不够且我能力有限),所以 $u'=\frac{1}{x}$,$v'=1$。

推得 $(\frac{\ln{x}}{x})' = \frac{1-\ln{x}}{x^2}$

因为该函数只有最大值,没有最小值,所以图象上导数为 $0$ 的点就是最高点。

于是最高点的横坐标就是 $\frac{1-\ln{x}}{x^2} = 0$ 的解,容易解得 $x=e$。

至此我们证明了当 $x=e$ 时就可以证明这个图象的最高点的横坐标是 $e$,根据前文可知换底不会改变图象最高点,故无论底数 $a$ 为多少,$y=\frac{\log_a{x}}{x}$ 的图象最高点的横坐标都是 $e$。

综上,函数在 $[1,e]$ 区间递增,$[e,\infty)$ 区间递减。

我们再求一下图象上与横坐标为 $2$ 的点的纵坐标相同的另一点,即求解 $2^x=x^2$。这个通过枚举就可以解得 $x=4$。所以图象在 $x=2$ 与 $x=4$ 处的纵坐标相同。

有了函数的分段变化情况,我们就可以判断 $\frac{\ln{x}}{x}$ 和 $\frac{\ln{y}}{y}$ 的大小关系了。

大力分类讨论即可。

【小知识】比较 x^y 和 y^x 的大小的更多相关文章

  1. python小技巧 小知识

    python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...

  2. python之数字类型小知识

    数字是表示计数的抽象事物,也是数学运算和推理的基础,所以,生活中数字是生活中无处不在的,那么,在python语言中运用数字有哪些小知识呢,不妨花点时间看一下这篇博文,牢记这些小知识. 整数类型中四种进 ...

  3. Java基础小知识(一)

     序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...

  4. 【python学习小知识】求绝对值和numpy和tensor的相互转换

    一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...

  5. golang拾遗:内置函数len的小知识

    len是很常用的内置函数,可以测量字符串.slice.array.channel以及map的长度/元素个数. 不过你真的了解len吗?也许还有一些你不知道的小知识. 我们来看一道GO101的题目,这题 ...

  6. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

  7. HTML+CSS中的一些小知识

    今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...

  8. iOS APP开发的小知识(分享)

          亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...

  9. Unix系统小知识(转)

    Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...

随机推荐

  1. debian系统中添加sudo权限

    刚安装好的Debian默认还没有sudo功能.1.安装sudo# apt-get install sudo2.修改 /etc/sudoers 文件属性为可写# chmod +w /etc/sudoer ...

  2. 第一个简单APP设计图

    以下是我画出来的最简单的手机UI设计图哟,以后慢慢积累吧.... 其实使用很简单,很多控件都有,直接使用就好....还是多动手吧,相信自己之后能很好的掌握这个的使用哟!!!!!!

  3. Hibernate5+Spring4整合

    (1) pom.xml <!--Spring Object/Relational Mapping --> <dependency> <groupId>org.spr ...

  4. flask 之(五) --- 对象|钩子|拆分

    内置对象 request: 请求的所有信息 session   服务端会话技术的接口 config:    当前项目的配置信息,模板中可以直接使用 g:global 在单次请求过程中,实现全局数据共享 ...

  5. Leetcode之广度优先搜索(BFS)专题-279. 完全平方数(Perfect Squares)

    Leetcode之广度优先搜索(BFS)专题-279. 完全平方数(Perfect Squares) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ar ...

  6. 应用安全 - 工具|平台 - Elasticsearch- 漏洞 - 汇总

    未授权访问 (1)/_cat/indices #Index个数查询 (2)/_mapping?pretty=true #type个数查询 (3)根据Index和type查询表数据 (4)/_river ...

  7. NOIp2015D1T3 斗地主【暴搜】

    题目传送门 刚开始读到题目的时候,非常懵逼,非常崩溃,写着写着呢,也有点崩溃,细节有点多. 这个做法呢,只能过掉官方数据,洛谷上好像有加强版,只能得$86$分,就没有管了. 大概说一下思路: 暴力搜索 ...

  8. 【C/C++】BOOST 线程完全攻略 - 基础篇

    C++多线程开发是一个复杂的事情,mfc下提供了CWinThread类,和AfxBeginThread等等函数,但是在使用中会遇到很多麻烦事情,例如线程之间参数传递的问题,我们一般都是把参数new一个 ...

  9. 记录Linq中lambda动态表达式的使用方式

    项目中有的时候我们会用到动态表达式的方式去查询数据,这里简单记录下个人的使用方式,方便使用↓ //构建参数表达式 ParameterExpression parameter = Expression. ...

  10. [转帖]深入浅出全面解析RDMA

    深入浅出全面解析RDMA 置顶 2018年06月04日 11:36:54 MasterT-J 阅读数 17193更多 所属专栏: RDMA   RDMA(RemoteDirect Memory Acc ...