1. 程式人生 > >java大整數的乘方問題處理

java大整數的乘方問題處理

最近做OJ,發現java自帶的類庫好像沒有大整數乘方的方法,後來自己想了下,可以換一種方式實現:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

/**
 * 輸入2個自然數a、b相乘後的結果的位數
 * a,b大於等於1,小於等於2的64次方
 * @author Andy
 *
 */

public class Oj_10 {
 public static void main(String[] args) {

  try {
   InputStreamReader is_reader = new InputStreamReader(System.in);
   String str = new BufferedReader(is_reader).readLine();
   int controlFlag = 0, i = 0;

   String[] strs = str.split(" ");

   BigInteger bn = new BigInteger(strs[0]);
   BigInteger bn1 = new BigInteger(strs[1]);
   BigInteger bn2 = new BigInteger("1");
   BigInteger bn3 = new BigInteger("2");
   BigInteger bn4 = new BigInteger("1");

   for (i = 0; i < 64; i++) {
    bn4=bn4.multiply(bn3);
   }
   
   if ((bn.compareTo(bn2) < 0) || (bn1.compareTo(bn2) < 0)
     || (bn.compareTo(bn4) > 0) || (bn1.compareTo(bn4) > 0)) {
    controlFlag = 1;
   }
   
   if (controlFlag == 0) {
    System.out.println(bn.multiply(bn1).toString().length());
   }

  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}