Codeforces 621D Rat Kwesh and Cheese【Long Double】

来源:互联网 发布:山东php培训机构哪家好 编辑:程序博客网 时间:2024/06/06 01:49

D. Rat Kwesh and Cheese
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

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 haveexactly 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 numbersx, y andz to Rat Kwesh, and Rat Kwesh will pick one of the these twelve options:

  1. a1 = xyz;
  2. a2 = xzy;
  3. a3 = (xy)z;
  4. a4 = (xz)y;
  5. a5 = yxz;
  6. a6 = yzx;
  7. a7 = (yx)z;
  8. a8 = (yz)x;
  9. a9 = zxy;
  10. a10 = zyx;
  11. a11 = (zx)y;
  12. 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 thatc, 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 thatac.

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 ofx, y andz 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 asx^y^z (without brackets), and (xy)z should be outputted as(x^y)^z (quotes for clarity).

Examples
Input
1.1 3.4 2.5
Output
z^y^x
Input
2.0 2.0 2.0
Output
x^y^z
Input
1.9 1.8 1.7
Output
(x^y)^z

题目大意:

给你12个数,输出最大的那个。


思路:


浮点数范围:



那么对于200^200的数据是可以用long double来存下来的。

所以我们对12个数都取对数,然后再比较大小即可。

如果取两次对数的话,精度损失会很多。


Ac代码:


#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>using namespace std;long double x,y,z;long double num[50];char s[15][15] = {" ","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"};int main(){    while(cin>>x>>y>>z)    {        long double maxn=-1;        char ans[15];        num[1]=pow(y,z)*log(x);        num[2]=pow(z,y)*log(x);        num[3]=y*z*log(x);        num[4]=y*z*log(x);        num[5]=pow(x,z)*log(y);        num[6]=pow(z,x)*log(y);        num[7]=x*z*log(y);        num[8]=x*z*log(y);        num[9]=pow(x,y)*log(z);        num[10]=pow(y,x)*log(z);        num[11]=x*y*log(z);        num[12]=x*y*log(z);        for(int i=1;i<=12;i++)        {            if(num[i]>maxn)            {                maxn=num[i];                strcpy(ans,s[i]);            }        }        cout<<ans<<endl;    }}








0 0
原创粉丝点击