模板
vector<int> div(vector<int> &A, int b, int &r)
{
vector<int> C;
r = 0;
for (int i = A.size() - 1; i >= 0; i -- )
{
r = r * 10 + A[i];
C.push_back(r / b);
r %= b;
}
reverse(C.begin(), C.end());
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
public static Map<List<Integer>, int> div(List<Integer> num1, int num2) {
Map<List<Integer>, Integer> res = new HashMap<>();
List<Integer> num3 = new ArrayList<>();
int t = 0;
for (int i = num1.size() - 1; i >= 0; i--) {
t = t * 10 + num1.get(i);
num3.add(t / num2);
t %= num2;
}
Collections.reverse(num3);
while (num3.size() > 1 && num3.get(num3.size() - 1) == 0) {
num3.remove(num3.size() - 1);
}
res.put(num3, t);
return res;
}
练习
04 高精度除法

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());
br.close();
Map<List<Integer>, Integer> res = div(num1, num2);
res.forEach((key, value) -> {
for (int i = key.size() - 1; i >= 0; i--) {
System.out.print(key.get(i));
}
System.out.println();
System.out.print(value);
}
);
}
public static Map<List<Integer>, Integer> div(List<Integer> num1, int num2) {
Map<List<Integer>, Integer> res = new HashMap<>();
List<Integer> num3 = new ArrayList<>();
int t = 0;
for (int i = num1.size() - 1; i >= 0; i--) {
t = t * 10 + num1.get(i);
num3.add(t / num2);
t %= num2;
}
Collections.reverse(num3);
while (num3.size() > 1 && num3.get(num3.size() - 1) == 0) {
num3.remove(num3.size() - 1);
}
res.put(num3, t);
return res;
}
}
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();
BigInteger[] res = num1.divideAndRemainder(new BigInteger(num2));
System.out.println(res[0]);
System.out.println(res[1]);
}
}