如何创建一个显示a ^ b小于或大于e ^ c的程序

iMa*_*Max -1 c math

我想问一些问题。a^b > e^c例如,当我输入时,如何制作要求您显示的程序是?(e是欧拉常数)?

Input : 7 1 3
Output : > 
Run Code Online (Sandbox Code Playgroud)

因为7^1 is 7 and e^3 is 20.0855因此7 < 20.085

我尝试了这段代码,但它不能说明问题a = 1000000, b = 1000000, c = 1000000所在1000000^1000000 (sign) e^1000000

int main(int argc, char const *argv[])
{
    int testcase;
    double a,b,c,e;
    scanf("%d",&testcase); getchar();

    for(int i = 1; i <= testcase; i++){
        scanf("%lf %lf %lf",&a,&b,&c); getchar();
        double normalSquare = 0;
        double eSquare = 0;
        normalSquare = pow(a,b);
        eSquare = exp(c); //  Ini e^x
        printf("Normal Square : %lf\n",normalSquare);
        printf("eSquare : %lf \n",eSquare);
        if(normalSquare > eSquare){
            printf("Case #%d: >\n", i);
        } else {
            printf("Case #%d: <\n",i);
        }
    }

    return 0;
}


Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 5

将公式重新排列为

b * log(a) > c * log(e)
Run Code Online (Sandbox Code Playgroud)

并且log(e)为1(假设自然对数也是C标准库log函数的基础),因此这进一步简化为

b * log(a) > c
Run Code Online (Sandbox Code Playgroud)

至少这样您就不会溢出double,这就是您正在发生的事情。作为数字程序员,“在日志空间中工作”是您必须习惯的。