模板
vector<int> mul(vector<int> &A, int b)
{
vector<int> C;
int t = 0;
for (int i = 0; i < A.size() || t; i ++ )
{
if (i < A.size()) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
public static List<Integer> mul(List<Integer> num1, int num2) {
List<Integer> num3 = new ArrayList<>();
int t = 0;
for (int i = 0; i < num1.size() || t != 0; i++) {
if (i < num1.size()) {
t += num1.get(i) * num2;
}
num3.add(t % 10);
t /= 10;
}
while (num3.size() > 1 && num3.get(num3.size() - 1) == 0) {
num3.remove(num3.size() - 1);
}
return num3;
}
练习
03 高精度乘法

import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] chars1 = br.readLine().toCharArray();
List<Integer> num1 = new ArrayList<>();
for (int i = chars1.length - 1; i >= 0; i--) {
num1.add(chars1[i] - '0');
}
int num2 = Integer.parseInt(br.readLine());
List<Integer> num3 = mul(num1, num2);
for (int i = num3.size() - 1; i >= 0; i--) {
System.out.print(num3.get(i));
}
}
public static List<Integer> mul(List<Integer> num1, int num2) {
List<Integer> num3 = new ArrayList<>();
int t = 0;
for (int i = 0; i < num1.size() || t != 0; i++) {
if (i < num1.size()) {
t += num1.get(i) * num2;
}
num3.add(t % 10);
t /= 10;
}
while (num3.size() > 1 && num3.get(num3.size() - 1) == 0) {
num3.remove(num3.size() - 1);
}
return num3;
}
}
import java.io.*;
import java.math.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BigInteger num1 = new BigInteger(br.readLine());
String num2 = br.readLine();
br.close();
System.out.println(num1.multiply(new BigInteger(num2)));
}
}