简单题思维转化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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值