Question
Content
给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。
输入格式
共两行,第一行包含整数 A,第二行包含整数 B。
输出格式
共两行,第一行输出所求的商,第二行输出所求余数。
数据范围
1≤ A 的长度 ≤100000, 1≤ B ≤10000, B 一定不为 0
输入样例:
7
2
输出样例:
3
1
Solution
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
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 = division(a, b);
for (int i = ans.size() - 2; i >= 0; i--) {
System.out.print(ans.get(i));
}
System.out.println();
System.out.println(ans.get(ans.size() - 1));
bufferedReader.close();
}
private static List<Integer> division(List<Integer> a, Integer b) {
int t = 0;
List<Integer> ans = new ArrayList<>();
for (int i = a.size() - 1; i >= 0; i--) {
t = t * 10 + a.get(i);
ans.add(t / b);
t %= b;
}
Collections.reverse(ans);
while (ans.size() > 1 && ans.get(ans.size() - 1) == 0) {
ans.remove(ans.size() - 1);
}
ans.add(t);
return ans;
}
}