1017 A除以B (20分)
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例
123456789050987654321 7
输出样例
17636684150141093474 3
代码实现
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;
public class Main{ public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String[] s = bufferedReader.readLine().split(" "); bufferedReader.close(); char[] str = s[0].toCharArray(); int b = s[1].charAt(0) - '0'; StringBuilder result = new StringBuilder(); int number = 0; for (char c : str) { number = number * 10 + (int) c - '0'; result.append((char) (number / b + '0')); number = number % b; } String out = result.toString(); if(out.startsWith("0") && out.length()!= 1){ System.out.print(out.substring(1) + " " + number); }else{ System.out.print(out + " " + number); } } }
|
解题思路
此题内容比较好理解,就是模仿小学学的除法竖式来进行除法的运算。将除数一位一位进行处理,核心代码就for循环中的三句,这三句代码模拟实现了除法运算的过程。需要注意的就是输出最终结果时候处理一下,保证输出结果格式和要求的一致。
在OJ中提交Java代码需要注意类名要为Main,即
public class Main{ public static void main(String[] args){ } }
|