题目:B. High School: Become Human

Posted keep250

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目:B. High School: Become Human相关的知识,希望对你有一定的参考价值。

题目:B. High School: Become Human
 
Key words:math;对数;单调性;double精度问题;long double;CF_DIV2_B;
 
分析:
    这个题第一个想法是直接算出x^y和y^x的值,然后比较输出结果。但是,题目中x和y的取值范围在1~1e9,所以,这就意味着算法应该不是直接算结果。那么,应该有其它做法。其实这里是可以找规律(比赛中也有许多人是找规律AC的),而现在要说的是用自然对数把复杂度降低下来。
    首先,x^y和y^x都可以在ln的基础上建立自然对数,也就是得到 ln(x^y) = y*ln(x), ln(y^x) = x*ln(y)。现在由题目可以得到x和y都是大于等于1,所以它们幂组合的对数一定是大于0,这样,单调性就有了保证,就可以直接把上界为(1e9)^(1e9)这样的运算变成上界为21*(1e9)的运算。因为log()函数是double函数,所以,x和y的数据类型都为double型。但是,这里卡了精度,用double型可能本地能过的例子无法过服务器,所以,一律使用long double型保证精度。然后接下来的就是普通的比较大小了。
 
参考资料:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main() {
 5     long double a,b; cin>>a>>b;
 6     long double x = b * log(a), y = a * log(b);
 7     if(x < y) cout<<"<"<<endl;
 8     else if(x == y) cout<<"="<<endl;
 9     else cout<<">"<<endl;
10     return 0;
11 }

 

以上是关于题目:B. High School: Become Human的主要内容,如果未能解决你的问题,请参考以下文章

High School: Become Human(数学思维)

CF987B - High School: Become Human

Codeforces Round #485 (Div. 2)-B-High School: Become Human

2020-2021 Russia Team Open, High School Programming Contest G题(带花树)

high school d×d第二季啥时候出

求 high school dxd 官网网址