java-1017 A除以B

本题要求计算 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的处理就行了。

猜你喜欢

转载自blog.csdn.net/jdie00/article/details/81637406