21天刷題計劃之8.1—數字比較(Java語言描述)
阿新 • • 發佈:2019-02-10
題目描述:
牛牛很喜歡對數字進行比較,但是對於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 "<"; } } }