CF987B - High School: Become Human
Year 2118. Androids are in mass production for decades now, and they do all the work for humans. But androids have to go to school to be able to solve creative tasks. Just like humans before.
It turns out that high school struggles are not gone. If someone is not like others, he is bullied. Vasya-8800 is an economy-class android which is produced by a little-known company. His design is not perfect, his characteristics also could be better. So he is bullied by other androids.
One of the popular pranks on Vasya is to force him to compare xy with yx. Other androids can do it in milliseconds while Vasya's memory is too small to store such big numbers.
Please help Vasya! Write a fast program to compare xyxy with yx for Vasya, maybe then other androids will respect him.
Input
On the only line of input there are two integers x and y (1≤x,y≤109).
Output
If xy<yx, then print '<' (without quotes). If xy>yx, then print '>' (without quotes). If xy=yx, then print '=' (without quotes).
Examples
5 8
>
10 3
<
6 6
=
Note
In the first example 5 8=5⋅5⋅5⋅5⋅5⋅5⋅5⋅5=390625, and 85=8⋅8⋅8⋅8⋅8=32768. So you should print '>'.
In the second example 10 3=1000<3 10=59049.
In the third example 6 6=46656=6 6.
这道题,看题意首先想到快速幂,再看数据范围,显然会炸,那么最简单粗暴的方法就是,比较 x ^ y 与 y ^ x 的大小关系。(如此简洁明了的题面 >_<)
我们要先在两式旁取对数,就是比较 ln x ^ y 与 ln y ^ x 的大小关系,先假设左式小于右式:(前方高能,请注意)
ln x ^ y < ln y & x; 即 y * ln x < x * lny;
所以 ln x / x < ln y / y;
那么通过归纳我们可以设 f (n) = ln n / n;
取这个函数的导数,即 f'(n) = ( ln n - 1 )/ n ^ 2;
那么当 f'(n)> 0 时, ln n > 1, 所以当 x, y > e (因为是整数,相当于大于等于3)时, 若 x > y, 则 x ^ y < y ^ x;
证明完成之后,我们就可以知道,当给出的 x , y 大于 3 的时候,只需要判断 x 和 y 的大小关系即可,其他的只要特判就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include<bits/stdc++.h> using namespace std; int main() { int x,y,i; cin>>x>>y; if (x == y){ cout<< "=" <<endl; return 0; } else { if (x == 1){ cout<< "<" ; return 0; } if (y == 1){ cout<< ">" ; return 0; } int h = max(x,y); if (h <= 4){ long long sum1 = 1,sum2 = 1; for (i = 1; i <= y; i++){ sum1 *= x; } for (i = 1; i <= x; i++){ sum2 *= y; } if (sum1 < sum2){ cout<< "<" ; } else if (sum1 > sum2){ cout<< ">" ; } else { cout<< "=" ; } } else { if (x > y){ cout<< "<" ; } else { cout<< ">" ; } } } return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥