PAT乙级真题之A除以B (20) (大数求余,整数和字符串之间的处理)

题目描述
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入描述:
输入在1行中依次给出A和B,中间以1空格分隔。


输出描述:
在1行中依次输出Q和R,中间以1空格分隔。

输入例子:
123456789050987654321 7

输出例子:
17636684150141093474 3

  解法:

package abc;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
	public static void main(String [] args) throws IOException {
		BufferedReader bR = new BufferedReader(new InputStreamReader(System.in));///BufferedReader类从字符输入流中读取文本并缓冲字符,以便有效地读取字符
		String [] ab = bR.readLine().split(" ");///输入流抛出错误。split分割字符串
		
		bR.close();
		int b = Integer.parseInt(ab[1]),t=0;///b为除数
		StringBuilder strB = new StringBuilder();
		
		for(int i=0;i<ab[0].length();i++) {
			t=t*10+ab[0].charAt(i)-'0';///转化为整数
			strB.append((char)(t/b+'0'));///又转化为字符
			t=t%b;///余数。
		}
		String ret = strB.toString();///转化为字符串
		if(ret.charAt(0)=='0' && ret.length() !=1) {
			System.out.print(ret.substring(1)+" "+t);///取第二个元素到结尾的字符串
		}else {
			System.out.print(ret+" "+t);
		}
	}
}

  

不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
原文地址:https://www.cnblogs.com/wszhu/p/12285216.html