Question
Content
给定两个非负整数(不含前导 0) A 和 B,请你计算 A * B 的值。
输入格式
共两行,第一行包含整数 A,第二行包含整数 B。
输出格式
共一行,包含 A * B 的值。
数据范围
1≤ A的长度 ≤100000, 0≤ B ≤10000
输入样例:
2
3
输出样例:
6
Solution
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String s = bufferedReader.readLine();
List<Integer> a = new ArrayList<>();
for (int i = s.length() - 1; i >= 0; i--) {
a.add(Character.getNumericValue(s.charAt(i)));
}
Integer b = Integer.parseInt(bufferedReader.readLine());
List<Integer> ans = multiplication(a, b);
for (int i = ans.size() - 1; i >= 0; i--) {
System.out.print(ans.get(i));
}
bufferedReader.close();
}
private static List<Integer> multiplication(List<Integer> a, Integer b) {
List<Integer> ans = new ArrayList<>();
if (b == 0) {
ans.add(0);
return ans;
}
int t = 0;
for (Integer integer : a) {
t += integer * b;
ans.add(t % 10);
t /= 10;
}
if (t != 0) {
ans.add(t);
}
while (ans.size() > 1 && ans.get(ans.size() - 1) == 0) {
ans.remove(ans.size() - 1);
}
return ans;
}
}