简单题思维转化BestCoder

题意:给你a, b, c, d四个数,这几个数的范围都是大于0小于1000的整数,让比较 a ^b 和 c ^ d的大小。

这道题看着特别简单,但是当时就是做不出来,将近一个月没有做题了,手生了,不过看完题解之后,这个题还是挺简单的,关键就是一步转化就是两边同时取对数也就成为了b * log(a) 与 d * log(c)的大小比较,所以这样的话就在double的范围内了,不过还需注意一点就是有误差,不能完全正确的,因为在取对数的时候有个误差,所以要设置一个精度,代码如下:

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 const double EPS = 1e-8;//精度
 5 int main()
 6 {
 7     int a, b, c, d;
 8     while (cin >> a >> b >> c >> d)
 9     {
10         double t = b * log(a) - d * log(c);
11         if (fabs(t) < EPS)
12             cout << "=" << endl;
13         else
14             if (t > 0)
15                 cout << ">" << endl;
16             else
17                 cout << "<" << endl;
18     }
19     return 0;
20 }
原文地址:https://www.cnblogs.com/Howe-Young/p/4281188.html