题目很简单,问题就出在xyz的值太大。
注意点:
【1】必须以log对所有式子取对数来缩小答案大小。
【2】对取对数处理后的式子仍要用long double运算。
long double a[12];
long double x,y,z;
char w[12][10]={
"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(){
cin>>x>>y>>z;
a[0]=pow(y,z)*log(x); // x^y^z
a[1]=pow(z,y)*log(x); // x^z^y
a[2]=a[3]=y*z*log(x); // (x^y)^z (x^z)^y =x^(y*z)
a[4]=pow(x,z)*log(y); // y^x^z
a[5]=pow(z,x)*log(y); // y^z^x
a[6]=a[7]=x*z*log(y); // (y^x)^z (y^z)^x =y^(x*z)
a[8]=pow(x,y)*log(z); // z^x^y
a[9]=pow(y,x)*log(z); // z^y^x
a[10]=a[11]=x*y*log(z); // (z^x)^y (z^y)^x =z^(x*y)
int pos=0;
for(int i=1;i<12;i++){
if(a[i]>a[pos])
pos=i;
}
printf("%s\n",w[pos]);
return 0;
}