1. 程式人生 > >21天刷題計劃之8.1—數字比較(Java語言描述)

21天刷題計劃之8.1—數字比較(Java語言描述)

題目描述:

牛牛很喜歡對數字進行比較,但是對於3 > 2這種非常睿智的比較不感興趣。上了高中之後,學習了數字的冪,他十分喜歡這種數字表示方法,比如xy。
由此,他想出了一種十分奇妙的數字比較方法,給出兩個數字x和y,請你比較xy和yx的大小,如果前者大於後者,輸出">",小於則輸出"<",等於則輸出"="。

輸入描述:

兩個數字x和y。
滿足1 <= x,y <= 10^9

輸出描述:

一個字元,">","<“或者”="。

示例1

輸入
2 2

輸出
=

示例2

輸入
2 4

輸出
=

分析:

分析題意,如果直接比較冪函式,會導致記憶體溢位,無法正確比較冪函式大小。但是可以根據對數函式單調遞增的特點,將冪函式的比較轉換成對數函式大小的比較。
將x^y和 y^x轉換成ylogx和xlogy之間大小的比較。

程式碼如下:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws Exception {
		
		Scanner scan = new Scanner(System.in);
		double x = scan.nextLong();
		double y = scan.nextLong();
		System.out.println(comp(x,y));
		
	}

	public static String comp(double num1, double num2) throws Exception {
		
		if((num1<1.0||num1>Math.pow(10, 9)) && (num2<1.0||num2>Math.pow(10, 9))){
			throw new Exception("輸入超出限制");
		}
		
		double a = num2*Math.log(num1);
		double b = num1*Math.log(num2);
		
		if(a==b){
			return "=";
		}	
		else if(a>b){
			return ">";
		}else{
			return "<";
		}	
	}
}