问题描述:
牛牛很喜欢对数字进行比较,但是对于3 > 2这种非常睿智的比较不感兴趣。上了高中之后,学习了数字的幂,他十分喜欢这种数字表示方法,比如xy。
由此,他想出了一种十分奇妙的数字比较方法,给出两个数字x和y,请你比较xy和yx的大小,如果前者大于后者,输出”>”,小于则输出”<”,等于则输出”=”。
输入描述:
两个数字x和y。
满足1 <= x,y <= 109
输出描述:
一个字符,”>”,”<”或者”=”。
输入例子1:
2 2
输出例子1:
=
输入例子2:
2 4
输出例子2:
=
解题思路:
当x = y 时 x^y = y^x
考虑到对数函数logaN的性质a>1 时,N>1则logaN>0,N<1时,logaN<0,N=1,时,logaN=0
由此:取a = 10 ,N = x^y /y^x即判断 lg(x^y/y^x)的符号可以判断(x^y/y^x)与1的关系。
即判断ylgx-xlgy。 >0 则(x^y/y^x)>1 即x^y > y^x。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int y = scanner.nextInt();
String res = cal(x,y);
System.out.println(res);
}
private static String cal(int x, int y) {
if(x == y)
return "=";
if(x == 1)
return "<";
if(y == 1)
return ">";
double d1 = y * Math.log(x);
double d2 = x * Math.log(y);
if(d1 == d2){
return "=";
}
if(d1>d2)
return ">";
return "<";
}
}