2019-02-26-PAT乙级-1017-A除以B
原文链接:PAT乙级-1017-A除以B
github代码地址:HibisciDai/OJ-PAT-ACM
2019-02-26-PAT乙级-1017-A除以B
编程描述
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
辅助描述
1 2 3 4 5
| 作者: CHEN, Yue 单位: 浙江大学 时间限制: 100 ms 内存限制: 64 MB 代码长度限制: 16 KB
|
输入格式
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例
输出样例
算法实现
JAVA(openjdk)
直接进行int运算一定超过数字范围,采用java大数类超时,模拟除法运算模式进行一步步除和余。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main {
public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String[] input = in.readLine().split("\\s+");
String A = input[0]; int B = Integer.valueOf(input[1]); StringBuilder result = new StringBuilder();
int shang = 0, yu = 0; boolean zero = true; for (int i = 0; i < A.length(); i++) { shang = ((A.charAt(i) - '0') + yu * 10) / B; yu = ((A.charAt(i) - '0') + yu * 10) % B; if (zero == true) { if (shang == 0) continue; else { zero = false; } } result.append(shang); }
if (result.length() == 0) result.append(0); System.out.print(result + " " + yu); } }
|
运行结果
1 2 3 4 5 6 7 8
| 状态 分数 题目 编译器 耗时 用户 答案正确 20 1017 Java (openjdk) 91 ms HibisciDai 测试点 结果 耗时 内存 0 答案正确 81 ms 15232 KB 1 答案正确 85 ms 15832 KB 2 答案正确 83 ms 12964 KB 3 答案正确 91 ms 16020 KB 4 答案正确 89 ms 15772 KB
|