有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串,代表输入的两个大整数
输出描述:
输入的乘积,用字符串表示
输入例子1:
72106547548473106236 982161082972751393
输出例子1:
70820244829634538040848656466105986748
思路:进位问题最后考虑,先把第i位和第j位的乘积累加到a[i+j]上。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
String s2 = sc.next();
sc.close();
int[] num = new int[s1.length()+s2.length()];
for(int i = 0;i<s1.length();i++){
int a = s1.charAt(i) - '0';
for(int j = 0;j<s2.length();j++){
int b = s2.charAt(j) - '0';
num[num.length-i-j-2]+=a*b;
}
}
for(int i = 0;i<s1.length()+s2.length()-1;i++){
num[i+1] += num[i]/10;
num[i]%=10;
}
int index = num.length - 1;
StringBuilder builder = new StringBuilder();
if(num[index] == 0) index--;
while(index>=0){
builder.append((char)(num[index]+'0'));
index--;
}
System.out.println(builder.toString());
}
}