HDU 5170 GTY's math problem

数学题,a的b次方和c的d次方都很大,直接判断是做不出来的。

如果我们能找到一个函数F(x)是单调的,而F(X)的值又比较好算,那么可以通过比较F(X)的大小来判断自变量的大小。

令F(X)=log(X),a的b次方和c的d次方当做自变量。

那么接下来只要判断log(a的b次方)和log(c的d次方)的大小就可以判断a的b次方和c的d次方的大小了。

而log(a的b次方)=b*log(a),log(c的d次方)=d*log(c),很容易计算。

判断相等的时候注意一下精度问题。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

double a,b,c,d;

int main()
{
    while(~scanf("%lf%lf%lf%lf",&a,&b,&c,&d)){
    double ans1=b*log(a);
    double ans2=d*log(c);

    if(fabs(ans1-ans2)<0.000001) printf("=
");
    else if(ans1>ans2) printf(">
");
    else printf("<
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/4934085.html