题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5170
其实思路不难,若想比较这两个数,直接快速幂的话会爆数,所以可以取对数比较。
因为对数计算后得到的数为浮点数,则接下来就是浮点数比较大小的问题了。
有浮点数a,b。
- a==b,则fabs(a-b)<ESP
- a>b,则a-b>ESP
- a<b,则b-a>ESP
代码如下
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <queue>
#include <vector>
#include <stack>
#include <string>
#include <cstring>
using namespace std;
const int maxn=222222;
const int INF=0x7fffffff;
#define LSON l,m,rt<<1
#define RSON m+1,r,rt<<1|1
#define ESP 1e-7
double hanshu(int a, int b) {
return 1.0*b*log((double)a);
}
int main() {
int a,b,c,d;
while(scanf("%d%d%d%d", &a, &b, &c, &d)!=EOF) {
double x=hanshu(a, b), y=hanshu(c, d);
if(fabs(x-y)<ESP) puts("=");
else if(x-y>ESP) puts(">");
else puts("<");
}
return 0;
}