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);
}
}
}
不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。

浙公网安备 33010602011771号