本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
老样子,获取数据先:
public static String[] getData() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
return bufferedReader.readLine().split(" +");
}
获取成为一个长度为2的String数组
之后我们进行处理:我们将获取到的数据进一步的转化为被除数和除数。然后...进行某种处理/xyx
public static void main() throws IOException {
String[] targetString = getData();//获取两个数
char[] op1 = targetString[0].toCharArray();//被除数
char op2 = targetString[1].toCharArray()[0];//除数
System.out.println(culculate(op1, op2));
}
某种处理代码:
public static String culculate(char[] op1, char op2) {
StringBuilder stringBuilder = new StringBuilder();//商
int remainder = 0;
int iop2 = convertCharToInt(op2);
for (int i = 0 ; i < op1.length ; i ++) {//因为第一个数已经算过了
remainder = remainder * 10 + convertCharToInt(op1[i]);//计算本次操作数
stringBuilder.append(remainder / iop2);
remainder =remainder % convertCharToInt(op2);
}
return stringBuilder.charAt(0) == '0' && stringBuilder.length() > 1 ?
stringBuilder.substring(1) + " " + remainder :
stringBuilder.toString() + " " + remainder;
}
public static int convertCharToInt(char c) {
return c - 48;
}
public static char convertIntToChar(int i) {
return (char) (i + 48);
}
没什么好说的,基本上就是在仿照除法的竖式运算...注意一下中间的char向int转化和最后对于第一个数字出现0的处理就行了。