題目描述:
/**
牛牛很喜歡對數字進行比較,但是對于3 > 2這種非常睿智的比較不感興趣。
上了高中之后,學習了數字的冪,他十分喜歡這種數字表示方法,比如xy。
由此,他想出了一種十分奇妙的數字比較方法,
給出兩個數字x和y,
請你比較x^y和y^x的大小,如果前者大于后者,
輸出">",小于則輸出"<",等于則輸出"="。
輸入描述:
兩個數字x和y。
滿足1 <= x,y <= 109
輸出描述:
一個字符,">","<"或者"="。
輸入例子1:
2 2
輸出例子1:
=
輸入例子2:
2 4
輸出例子2:
=
*/
思路如下:
其實是比較
logx/x是一個
x>=3時候是一個單調遞減函數
x==y時候直接相等
x!=y時候
默認x<y
若y>x>3 直接用單調性解決
若x=1 y>x 返回<
若x=2 y=4返回等于 y!=4 返回小于
代碼如下:
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int x, y;
scanf("%d%d", &x, &y);
bool isSwapped=false;
if(x>y){
isSwapped=true;
swap(x, y);
}
int flag=0;
if(x!=y){
if(x>3){
flag=1;
}
else if(x==2){
if(y>4){
flag=1;
}
else if(y<4){
flag=-1;
}
}
else if(x==1){
flag=-1;
}
else{
return -1;
}
}
if(isSwapped)
flag=-flag;
if(flag>0){
printf(">");
}
else if(flag<0){
printf("<");
}
else{
printf("=");
}
return 0;
}