PAT(B) 1017 A除以B(Java)

题目链接:1017 A除以B
分析
  • 读取输入的A和B后,保存为字符串。模拟除法运算过程。
  • 不要用BigInteger,因为会超时
  • 另外字符串经常要扩展(例如:append())的话,不要用String(非常慢),用StringBuilder是上上策。
  • 最后要注意,如果结果的第一位是0,并且只有一位,那么输出0,否则输出去掉首位后的结果。
/**
 * Score 20
 * Run Time 80ms
 * @author 柳婼 https://blog.csdn.net/liuchuo/article/details/56676450#commentBox
 * @version 2.0
 */

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));
		String[] ab = br.readLine().split(" ");// 读取输入的A和B到ab[0]和ab[1]
		br.close();

		int b = Integer.parseInt(ab[1]);// 获取B
		int temp = 0;// 除法运算的临时变量

		StringBuilder sb = new StringBuilder();// 保存结果

		// 模拟除法运算过程
		for (int i = 0; i < ab[0].length(); i++) {
			temp = temp * 10 + ab[0].charAt(i) - '0';// 当前步骤的被除数
			sb.append((char) (temp / b + '0'));// 当前步骤的商添加到结果的末尾
			temp = temp % b;// 当前步骤的余数
		}

		String result = sb.toString();

		// 第一位可能为0,为0去掉
		if (result.charAt(0) == '0' && result.length() != 1) {
			System.out.print(result.substring(1) + " " + temp);
		} else {
			System.out.print(result + " " + temp);
		}
	}
}
posted @ 2019-05-22 00:24  wowpH  阅读(878)  评论(0编辑  收藏  举报