题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5170
原博客链接:http://blog.csdn.net/sky_miange/article/details/43611547
解析:
这个数据一看就知道不能用普通的方法。
1000的1000次方。
C语言无法表达的。
可以想到用对数。
比较log(a^b) 和log(c^d)的大小
而log(a^b)=b*log(a);
log(c^d)=d*log(c);
OK
可以写代码了。
控制到12点后十二位就可以认为它们相等了
代码:#include <stdio.h>
#include <math.h>
#define eps 1e-12 //10的负十二次方
int main()
{
double a,b,c,d;
while(scanf("%lf%lf%lf%lf",&a,&b,&c,&d)!=EOF)
{
double s,s1;
s=b*log(a);
s1=d*log(c);
if(fabs(s-s1)<eps) //对数计算后,相差只要不超过10的负十二次方,就可以认为它们相等。
printf("=\n");
else if(s>s1)
printf(">\n");
else if(s<s1)
printf("<\n");
}
return 0;
}