算法提高 P1001(大数乘法)
当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.
输入:
62773417 12345678
输出:
774980393241726
输入:
62773417 12345678
输出:
774980393241726
关于Decimal的常用方法:
public BigDecimal(double val) | 将double表示形式转换 为BigDecimal |
public BigDecimal(int val) | 将int表示形式转换为 BigDecimal |
public BigDecimal(String val) | 将字符串表示 形式转换为BigDecimal |
public BigDecimal add(BigDecimal augend) | 加法 |
public BigDecimal subtract(BigDecimal subtrahend) | 减法 |
public BigDecimal multiply(BigDecimal multiplicand) | 乘法 |
public BigDecimal divide(BigDecimal divisor) | 除法 |
代码:
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
BigDecimal a1=new BigDecimal(a);
BigDecimal b1=new BigDecimal(b);
System.out.println(a1.multiply(b1).toString());
}
}