PAT(B) 1062 最简分数(Java)
题目描述
一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0。最简分数是指分子和分母没有公约数的分数表示形式。
现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数。
输入格式
输入在一行中按 N/M 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔。题目保证给出的所有整数都不超过 1000。
输出格式
在一行中按 N/M 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其间以 1 个空格分隔。行首尾不得有多余空格。题目保证至少有 1 个输出。
测试样例
Case 0:
输入
7/18 13/20 12
输出
5/12 7/12
Case 1:
输入(分数 1 比分数 2 大)
13/20 7/18 12
输出
5/12 7/12
Case 2:
输入(结果的分子分母必须互质)
1/2 1/3 16
输出
7/16
Java代码
/**********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
8/17/2019, 22:17:02 Accepted 20 1062 Java (openjdk) 85 ms wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
private static boolean coPrime(int a, int b) { // 检查a和b是否互质
while (true) {
a = a % b;
if (0 == a) {
return 1 == b ? true : false;
}
b = b % a;
if (0 == b) {
return 1 == a ? true : false;
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] number = br.readLine().split(" "); // 三个数
String[] arr = number[0].split("/");
int N1 = Integer.parseInt(arr[0]);
int M1 = Integer.parseInt(arr[1]);
arr = number[1].split("/");
int N2 = Integer.parseInt(arr[0]);
int M2 = Integer.parseInt(arr[1]);
int K = Integer.parseInt(number[2]);
int min, max; // 开区间的范围
if (N1 * M2 < N2 * M1) { // 分数1比分数2小
min = K * N1 / M1 + 1; // 最小值
max = K * N2 / M2; // 最大值
if (K * N2 == max * M2) { // 最大值是等于右边界
max = max - 1; // 开区间
}
} else { // 分数1比分数2大
min = K * N2 / M2 + 1;
max = K * N1 / M1;
if (K * N1 == max * M1) {
max = max - 1;
}
}
for (int i = min, count = 0; i <= max; ++i) {
if (coPrime(K, i)) { // 互质
if (count > 0) { // 不是第一个分数
System.out.print(" "); // 分数前面输出空格
}
System.out.print(i + "/" + K);
++count;
}
}
}
}
提交结果

PAT(B) 1062 最简分数(Java)的更多相关文章
- PAT 乙级 1062 最简分数(20) C++版
1062. 最简分数(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个分数一般写成两个整数相除的形式: ...
- PAT Basic 1062 最简分数 (20 分)
一个分数一般写成两个整数相除的形式:/,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 / 和 /,要求你按从小到大的顺序列出它们之间分母为 K 的最简分 ...
- PAT 1062 最简分数(20)(代码+思路)
1062 最简分数(20 分) 一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N ...
- PAT Basic 1062
1062 最简分数 一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M ...
- PAT——1062. 最简分数
一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母 ...
- PAT 1062 最简分数
https://pintia.cn/problem-sets/994805260223102976/problems/994805268334886912 一个分数一般写成两个整数相除的形式:/,其中 ...
- PAT 1062. 最简分数(20)
一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母 ...
- PAT 1071. 小赌怡情(15) JAVA
1071. 小赌怡情(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 常言道“小赌怡情”.这是一个很简单的 ...
- PAT刷题 (Java语言)
1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calculate ...
随机推荐
- 第07组 Alpha冲刺(1/6)
队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:完成了,网页后端的大部分工作.负责了很大一部分的后端工作. 展示GitHub当日代码/文档签入记录 ...
- 封装qt http文件下载类
#include <QApplication> #include <QtWidgets> #include <QtNetwork> //downloads one ...
- graph embedding 使用方法
无论是network embedding 还是graph embedding都是通过节点(node)和边的图,学出每个节点的embedding向量. 比较流行的算法有: Model Paper Not ...
- jsch连接sftp后连接未释放掉问题排查
项目中通过jsch中的sftp实现上传下载文件.在压测过程中,由于调用到sftp,下载文件不存在时,系统不断抛出异常,内存飙升,逐渐把swap区也占满,通过top监控未发现占用内存的进程,通过查找ss ...
- QEMU支持的网络模式
网络是现代计算机系统不可或缺的一部分,QEMU也对虚拟机提供丰富的网络支持.qemu-kvm中主要给客户机提供了如下4种不同模式的网络. (1)基于网桥(Bridge)的虚拟网卡 (2)基于NAT(N ...
- PHP7 MongoDB 使用方法
原文链接: http://www.zhaokeli.com/article/8574.html MongoDb原生操作 Mongodb连接 PHP7 连接 MongoDB 语法如下: 复制代码 $ma ...
- 1. Tomcat之startup.sh
#判断操作系统os400=falsecase "`uname`" inOS400*) os400=true;;esac # 取脚本名称PRG="$0" # 判断 ...
- VPB测试 使用Osgdem运行例子
1.Osgdem运行例子所需数据下载地址: http://www.cc.gatech.edu/projects/large_models/ps.html Download Elevation Map: ...
- Qt编写气体安全管理系统2-界面框架
一.前言 整体框架包括两个部分,一部分是UI界面框架,比如一级二级导航菜单按钮整体布局等,一部分是项目框架,上一篇文章说的是项目框架,这一篇文章来说界面框架,Qt做界面非常快速和高效,尤其是提供了可视 ...
- JS语言中的JSON.parse()和JSON.stringify()
parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":& ...