首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

SGU 112 a^b - b^a - Java 大整數計算

     編輯:C++ 入門

問題描述

給定自然數 a, b (1 ≤ a, b ≤ 100),計算 a^b - b^a。結果可能為負數,位數極大(100^100 約 200 位),必須使用大整數。

Java 實現

利用 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 ✓

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved