题目描述
有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串,代表输入的两个大整数
输出描述:
输入的乘积,用字符串表示
示例1
输入
复制
72106547548473106236 982161082972751393
输出
复制
70820244829634538040848656466105986748
代码如下:
import java.util.*;
import java.math.BigInteger;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String a = input.next();
String b = input.next();
BigInteger b1 = new BigInteger(a);
BigInteger b2 = new BigInteger(b);
BigInteger sum = b1.multiply(b2) ;
System.out.println(sum+"");
}
}
字符串转整型:
int i = Integer.parseInt([String]);
字符串转长整形:
方法1: long l = Long.valueOf("String");
方法2: long l = Long.parseLong(“String”);
整型转字符串:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
本题相乘的数值已经超过了int和long类型的范围,所以不能转化为int或者long类型来计算,需要
创建一个 java.math.BigInteger 的对象, 而非整型数类型:BigInteger bi = new BigInteger(s);
BigInteger 的对象之间,也可调用特定的方法(而不是使用操作符),进行加减乘除的运行,其结果是一个新的 BigInteger 对象。
BigInteger a = new BigInteger("133333333");
BigInteger b = new BigInteger("233333333");
BigInteger c = a.multiply(b) a乘以b 注
相加:add() 相减 :subtract() 相乘:mutiply() 相除:divide()。