题目描述
高精度除法——Java解法
样例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String q1 = bufferedReader.readLine();
String q2 = bufferedReader.readLine();
div(q1,q2);
bufferedReader.close();
}
private static void div(String q1, String q2s) {
/*
加减乘都是逆序,为除可以正序解决,但是为了解决一道题中同时有加减乘除,所以对除法也采取倒序解决
1.q1倒序,q2位数比较低所以q2不用倒序
2.r为余数,模仿正常求解过程即可
*/
int q2 = Integer.parseInt(q2s);
char[] q1ReverseArray = new StringBuilder(q1).reverse().toString().toCharArray();
StringBuilder result = new StringBuilder();
int r=0;
for (int i = q1ReverseArray.length-1;i>=0 ; i--) {
//这样循环之后,最终的结果不用逆序,就是正序的
r=r*10+(q1ReverseArray[i]-'0');
result.append(r/q2);
r=r%q2;
}
/*
经过循环之后,r<q2了,为最后的余数
去除前导0后即可输出
*/
while (result.charAt(0)=='0'&&result.length()>1){
result.deleteCharAt(0);
}
System.out.println(result);
System.out.println(r);
}
}