给定两个正整数A和B,请你计算A * B的值。
输入格式
共两行,第一行包含整数A,第二行包含整数B。
输出格式
共一行,包含A * B的值。
数据范围
1≤A的长度≤1000001≤A的长度≤100000,
0≤B≤100000≤B≤10000
输入样例:
2
3
输出样例:
6
import java.io.*;
import java.util.*;
class Main{
//高精度*低精度
static ArrayList<Integer> mulString(ArrayList<Integer> a, int b){
ArrayList<Integer> c = new ArrayList<>();
int res = 0;
for(int i = 0, t = 0; i < a.size(); ++i){
res += a.get(i) * b;
c.add(res % 10);
res /= 10;
}
if(res != 0)c.add(res);
while(c.size() > 1 && c.get(c.size() - 1) == 0)c.remove(c.size() - 1);
return c;
}
//高精度*高精度
static ArrayList<Integer> mulStringHighLevel(ArrayList<Integer> a, ArrayList<Integer> b){
ArrayList<Integer> c = new ArrayList<>(Collections.nCopies(a.size() + b.size(), 0));
for(int i = 0; i < a.size(); ++i)
for(int j = 0; j < b.size(); ++j)
c.set(i + j, c.get(i + j) + a.get(i) * b.get(j));
int res = 0;
for(int i = 0, t = 0; i < a.size(); ++i){
res += c.get(i);
c.set(i, res % 10);
res /= 10;
}
while(c.size() > 1 && c.get(c.size() - 1) == 0)c.remove(c.size() - 1);
return c;
}
public static void main(String[] args)throws Exception{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String a = buf.readLine();
String b = buf.readLine();
ArrayList<Integer> list = new ArrayList<>();
for(int i = a.length() - 1; i >= 0; --i)list.add(a.charAt(i) - '0');
int num = Integer.valueOf(b);
// ArrayList<Integer> list1 = mulString(list, num);
ArrayList<Integer> list1 = mulStringHighLevel(list, list);
for(int i = list1.size() - 1; i >= 0; --i){
System.out.print(list1.get(i));
}
}
}