hdu 5170 精度控制

众所周知,GTY是一位神犇,为了更好的虐场,他从来不写数学作业而是去屠题,他的数学老师非常不爽,但由于GTY每次考试都AK,她也不能说什么,有一天老师在黑板上写了四个数——a,b,c,da,b,c,d 然后让GTY比较a^ba?b??和c^dc?d??的大小,由于GTY不屑于虐这道题,就把这个问题交给你了。

输入描述

多组数据(约5000组),每组数据包含4个整数a,b,c,d(1 \leq a,b,c,d \leq 1000)a,b,c,d(1≤a,b,c,d≤1000),用空格隔开

输出描述

对于每组数据,若a^ba?b??>c^dc?d??,输出”>”, 若a^ba?b??<c^dc?d??,输出”<”, 若a^ba?b??=c^dc?d??,输出”=”

输入样例

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)<epseps设的越小精度越大,一般来说设到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("=\n");
        else if(ans1>ans2) printf(">\n");
        else printf("<\n");
    }
    return 0;
}
时间: 2024-08-11 05:43:23

hdu 5170 精度控制的相关文章

HDU 5170 GTY&#39;s math problem 精度判断问题

传送门 GTY's math problem Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 568    Accepted Submission(s): 263 Problem Description GTY is a GodBull who will get an Au in NOI . To have more time to l

hdu 5170 5171

hdu 5170题意: 给定四个整数 a,b,c,d; 要比较a^b 与c^d的大小, 如果数据小的话直接搞就行,现在数据比较大,可以两边同取对数比较: 但是要注意精度问题! #include <iostream> #include <stdio.h> #include <string> #include <string.h> #include <algorithm> #include <cmath> using namespace

HDU 5170 GTY&#39;s math problem (bsst code #29 1001)

GTY's math problem Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 146    Accepted Submission(s): 80 Problem Description GTY is a GodBull who will get an Au in NOI . To have more time to learn

hdu 5170 GTY&#39;s math problem(水,,数学,,)

题意: 给a,b,c,d. 比较a^b和c^d的大小 思路: 比较log(a^b)和log(c^d)的大小 代码: int a,b,c,d; int main(){ while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF){ double x1 = b*log((double)a); double x2 = d*log((double)c); if(fabs(x1-x2)<eps){ puts("=")

文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

 1.在window下的命令重定向输出到文件中 2.将内容输入到某个文件中的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件中的名,然后将命令读取最后输出到文件中.命令<1.txt>2.txt   这一句的作用就是将执行的命令输入到2.txt中. 4.文件重定向案例1 #include <iostream> using namespace std; void main() { char str[30] = { 0 }; cin >> str;

C++ double 小数精度控制

第一种方法:cout<<fixed<<setprecision(20)<<mydouble<<endl; #include <iostream> #include <iomanip> using namespace std; int main() { double aDouble = 5.141592694827862736487362746374637434343434; cout<<fixed<<setpr

Java 浮点数精度控制

1.String.format?(String format,Object… args) Java中用String.format()来控制输出精度, format参数用来设置精度格式, args参数代表待格式化的数字. 返回值是格式化后的字符串. Java API文档中的解释是这样的: 文档不好懂… 没关系 直接上代码! //精确到小数点后两位: public class test { public static void main(String args[]) { //格式控制与C语言类似 S

HDU 1007 Quoit Design(二分+浮点数精度控制)

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 47104    Accepted Submission(s): 12318 Problem Description Have you ever played quoit in a playground? Quoit is a game in which fla

HDU 5705 Clock (精度控制,暴力)

题意:给定一个开始时间和一个角度,问你下一个时刻时针和分针形成这个角度是几点. 析:反正数量很小,就可以考虑暴力了,从第一秒开始暴力,直到那个角度即可,不会超时的,数目很少,不过要注意精度. 代码如下: #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #inclu