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;
}
原博客链接: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;
}
相关文章推荐
- HDU - 5170 - GTY's math problem
- 【CUGBACM15级BC第29场 A】hdu 5170 GTY's math problem
- hdu 5170 GTY's math problem(数学)
- HDU - 5170 GTY's math problem
- HDU 5170 GTY's math problem
- [HdOJ]5170 GTY's math problem
- hdu 5170 GTY's math problem(水,,数学,,)
- HDU 5170 GTY's math problem 水题
- hdu 5974 A Simple Math Problem
- HDU 1757 A Simple Math Problem [矩阵快速幂]
- HDU 1757 A Simple Math Problem 题解与分析
- HDU 1757 A Simple Math Problem
- [HDU](5974)A Simple Math Problem ---数论
- HDU 1757 A Simple Math Problem(矩阵快速幂)
- Math Problem HDU - 5105 暴力求解/公式
- HDU 1757 A Simple Math Problem
- 【矩阵乘法】hdu hdoj 1757 A Simple Math Problem
- HDU 5974 A Simple Math Problem(简单数学)
- HDU 5974 A Simple Math Problem 数学
- hdu 5974 A Simple Math Problem