• Codeforces Round #341 (Div. 2) D. Rat Kwesh and Cheese 数学


    D. Rat Kwesh and Cheese

    题目连接:

    http://www.codeforces.com/contest/621/problem/D

    Description

    Wet Shark asked Rat Kwesh to generate three positive real numbers x, y and z, from 0.1 to 200.0, inclusive. Wet Krash wants to impress Wet Shark, so all generated numbers will have exactly one digit after the decimal point.

    Wet Shark knows Rat Kwesh will want a lot of cheese. So he will give the Rat an opportunity to earn a lot of cheese. He will hand the three numbers x, y and z to Rat Kwesh, and Rat Kwesh will pick one of the these twelve options:

    a1 = xyz;
    a2 = xzy;
    a3 = (xy)z;
    a4 = (xz)y;
    a5 = yxz;
    a6 = yzx;
    a7 = (yx)z;
    a8 = (yz)x;
    a9 = zxy;
    a10 = zyx;
    a11 = (zx)y;
    a12 = (zy)x.
    Let m be the maximum of all the ai, and c be the smallest index (from 1 to 12) such that ac = m. Rat's goal is to find that c, and he asks you to help him. Rat Kwesh wants to see how much cheese he gets, so he you will have to print the expression corresponding to that ac.

    Input

    The only line of the input contains three space-separated real numbers x, y and z (0.1 ≤ x, y, z ≤ 200.0). Each of x, y and z is given with exactly one digit after the decimal point.

    Output

    Find the maximum value of expression among xyz, xzy, (xy)z, (xz)y, yxz, yzx, (yx)z, (yz)x, zxy, zyx, (zx)y, (zy)x and print the corresponding expression. If there are many maximums, print the one that comes first in the list.

    xyz should be outputted as x^y^z (without brackets), and (xy)z should be outputted as (x^y)^z (quotes for clarity).

    Sample Input

    1.1 3.4 2.5

    Sample Output

    z^y^x

    Hint

    题意

    12个表达式,让你输出最大的表达式

    题解:

    这个方法是Hezhu的,Orz

    太厉害了

    我们仔细想一想,次方这个乱七八糟的东西,我们显然可以直接取一个log

    但是这个东西还是有200^200,按照题解的方法,你还得取个log,然后再讨论一堆东西

    这个太麻烦了

    直接上long double就好了,long double 这个东西有自带的powl,logl函数,可以精度更加精确,而且这个玩意儿是存储的科学计数法

    总之比较玄学。

    最差情况,我想的是,有效数数字就应该只需要16位吧?

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    string s[12]={"x^y^z","x^z^y","(x^y)^z","(x^z)^y","y^x^z","y^z^x","(y^x)^z","(y^z)^x","z^x^y","z^y^x","(z^x)^y","(z^y)^x"};
    long double d[12];
    int main()
    {
        long double x,y,z;
        cin>>x>>y>>z;
        d[0]=powl(y,z)*logl(x);
        d[1]=powl(z,y)*logl(x);
        d[2]=z*y*logl(x);
        d[3]=z*y*logl(x);
        d[4]=powl(x,z)*logl(y);
        d[5]=powl(z,x)*logl(y);
        d[6]=z*x*logl(y);
        d[7]=z*x*logl(y);
        d[8]=powl(x,y)*logl(z);
        d[9]=powl(y,x)*logl(z);
        d[10]=x*y*logl(z);
        d[11]=x*y*logl(z);
        long double mx = -1e16;
        int idx = 0;
        for(int i=0;i<12;i++)
            if(mx<d[i])
                mx=d[i],idx=i;
        cout<<s[idx]<<endl;
    }
  • 相关阅读:
    Flask程序相关配置加载的三种方式
    Redis数据库在windows系统下的安装及使用
    Redis数据库介绍
    python中模块的制作
    4.ORM框架的查询
    3.ORM框架一对多的关系及使用
    2.ORM框架添加,修改,删除操作
    1.ORM介绍,基本配置及通过ORM框架创建表
    4.集合
    3.字典
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5211395.html
Copyright © 2020-2023  润新知