计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。java
时间: 2024-02-12 15:07:29 浏览: 189
好的,这是一个简单的高精度除法计算问题。以下是一个 Java 代码示例:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String A = sc.next();
int B = sc.nextInt();
sc.close();
String[] qr = divide(A, B);
System.out.println("Q = " + qr[0]);
System.out.println("R = " + qr[1]);
}
public static String[] divide(String A, int B) {
// 将字符串转换为整数列表,并翻转
int[] a = new int[A.length()];
for (int i = 0; i < a.length; i++) {
a[i] = A.charAt(a.length-i-1) - '0';
}
List<Integer> Q = new ArrayList<>();
int r = 0;
for (int i = a.length-1; i >= 0; i--) {
// 将余数加上当前位的值
r = r * 10 + a[i];
// 计算商和余数
int q = r / B;
r = r % B;
Q.add(q);
}
// 翻转商数列表和余数
Collections.reverse(Q);
String[] qr = new String[2];
qr[0] = Q.stream().map(String::valueOf).reduce("", String::concat);
qr[1] = String.valueOf(r);
return qr;
}
}
```
使用示例:
```
输入:
123456789012345678901234567890123456789012345678901234567890
7
输出:
Q = 176366841445064969858905096857318040597790017635255426860981566
R = 2
```
希望这个答案能够帮到你。
阅读全文