給定自然數 a, b (1 ≤ a, b ≤ 100),計算 a^b - b^a。結果可能為負數,位數極大(100^100 約 200 位),必須使用大整數。
利用 java.math.BigInteger 的 pow(int) 與 subtract() 方法直接計算:
import java.util.*;
import java.math.*;
public class Solution {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
BigInteger a, b;
int A, B;
while (cin.hasNextInt()) {
A = cin.nextInt();
B = cin.nextInt();
a = BigInteger.valueOf(A);
b = BigInteger.valueOf(B);
BigInteger c = a.pow(B).subtract(b.pow(A));
System.out.println(c);
}
}
}
BigInteger.valueOf(int) 將基本類型轉大整數pow(int) 參數為 int,故指數 ≤ 100 完美適用subtract() 自動處理負數結果println(c),負號自動包含快速冪算法下 pow 為 O(log n) 次大整數乘法,n ≤ 100 時極快。Java BigInteger 底層優化良好,無需手動實現大數運算。
輸入 2 3:2^3 - 3^2 = 8 - 9 = -1,輸出 -1 ✓