zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    移动 ProgramDataPackage Cache 文件夹
    Visual Studio 2017
    微信小程序 View:flex 布局
    echarts 模拟迁徙
    树莓派3 Windows 10 IoT Core
    Lumia 830 win10m 启用触摸按键
    青岛旅游
    <孤独者生存(小小辛巴投资手记)>读书笔记
    Python.Unix和Linux系统管理指南
    <低风险投资之路>读书笔记
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5211395.html
Copyright © 2011-2022 走看看