zoukankan      html  css  js  c++  java
  • hdu 5170 精度控制

    众所周知,GTY是一位神犇,为了更好的虐场,他从来不写数学作业而是去屠题,他的数学老师非常不爽,但由于GTY每次考试都AK,她也不能说什么,有一天老师在黑板上写了四个数——a,b,c,da,b,c,d 然后让GTY比较a^bab​​和c^dcd​​的大小,由于GTY不屑于虐这道题,就把这个问题交给你了。
    输入描述
    多组数据(约5000组),每组数据包含4个整数a,b,c,d(1 leq a,b,c,d leq 1000)a,b,c,d(1a,b,c,d1000),用空格隔开
    输出描述
    对于每组数据,若a^bab​​>c^dcd​​,输出”>”, 若a^bab​​<c^dcd​​,输出”<”, 若a^bab​​=c^dcd​​,输出”=”
    输入样例
    2 1 1 2
    2 4 4 2
    10 10 9 11
    输出样例
    >
    =
    <

    这道题无需使用大数类,因为可以转换为对数log,而log(a^b)=b*log(a)
    但很显然log求出来的都是小数,最后要用double存答案,
    求>,<都很简单,但是要求两个double是否相等绝对不能仅仅==,应该写成fabs(x1-x2)<eps
    eps设的越小精度越大,一般来说设到10的-10次方就够了
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    #define eps 1e-10
    int main()
    {
        int a,b,c,d;
        double tmp1,tmp2;
        while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
        {
            tmp1=log(a);tmp2=log(c);
            double ans1=b*tmp1;
            double ans2=d*tmp2;
            if(fabs(ans1-ans2)<eps) printf("=
    ");
            else if(ans1>ans2) printf(">
    ");
            else printf("<
    ");
        }
        return 0;
    }
  • 相关阅读:
    java-继承的注意事项
    java-代码块-局部代码块、构造代码块、静态代码块
    java-源文件中可以有多个类,但是最多只能有一个public修饰
    java-权限修饰符的区别
    APP测试-adb简介
    APP测试-Android模拟器
    APP测试-SDK环境 for Windows
    自动化测试-流程
    接口测试-接口请求关联
    接口测试-moco+excel+requests框架
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/5348024.html
Copyright © 2011-2022 走看看