您的位置:首页 > 其它

HDU 5170 GTY's math problem

2015-02-08 14:29 429 查看
题目链接: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Round #29 简单题