1562: 比较大小
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 481 Solved: 157
[Submit][Status][Web Board]
Description
众所周知,GTY是一位神犇,为了更好的虐场,他从来不写数学作业而是去屠题,他的数学老师非常不爽,但由于GTY每次考试都AK,她也不能说什么,有一天老师在黑板上写了四个数——a,b,c,d
然后让GTY比较a的b次和c的d次的大小,由于GTY不屑于虐这道题,就把这个问题交给你了。
Input
多组数据(约5000组),每组数据包含4个整数a,b,c,d(1≤a,b,c,d≤1000),用空格隔开
Output
对于每组数据,若a的b次>c的d次,输出”>”, 若a的b次<c的d次,输出”<”, 若a的b次=c的d次输出”=”。
Sample Input
2 1 1 2
2 4 4 2
10 10 9 11
Sample Output
>
=
<
HINT
注意精度
【分析】
- 幂的话会很大,所以想用Java的大数做,但是处理不好。看了下别人的思路才知道这个可以简化的。
- 左右两边取对数,数据就会变得小了。但是在比较是否相等时要注意精度,定义一个很小很小的数,如果相减的结果小于该数则表示几乎可以看做两数相等了。
#include<bits/stdc++.h>
using namespace std;
int main(){double a,b,c,d,s1,s2;double eps=1e-12;while(~scanf("%lf%lf%lf%lf",&a,&b,&c,&d)){s1=b*log(a);s2=d*log(c);if(fabs(s1-s2)<eps){printf("=\n");}else if(s1>s2){printf(">\n");}else if(s1<s2){printf("<\n");}}return 0;
}