题目链接: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);
}
}
}
05-11 22:50