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();
}
}
}