PAT——1062. 最简分数

一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。

现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数。

输入格式:

输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔。题目保证给出的所有整数都不超过1000。

输出格式:

在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔。行首尾不得有多余空格。题目保证至少有1个输出。

输入样例:

7/18 13/20 12

输出样例:

5/12 7/12
 1 package com.hone.basical;
 2
 3 import java.util.Scanner;
 4
 5 /**
 6  * 原题目:https://www.patest.cn/contests/pat-b-practise/1062
 7  * @author Xia
 8  * 最简分数,首先得判断两个数的大小
 9  * Math.round(double x)将x强制转化为整数(四舍五入)
10  * 这道题目有一个测试点没有通过。。
11  */
12
13 public class basicalLevel1062EasiestFraction {
14
15     public static void main(String[] args) {
16         Scanner in = new Scanner(System.in);
17         String aString = in.next();
18         String bString = in.next();
19         int k = in.nextInt();
20
21         int n1 = Integer.parseInt(aString.split("\\/")[0]);
22         int m1 = Integer.parseInt(aString.split("\\/")[1]);
23         double a = (double)n1/(double)m1;
24
25         int n2 = Integer.parseInt(bString.split("\\/")[0]);
26         int m2 = Integer.parseInt(bString.split("\\/")[1]);
27         double b = (double)n2/(double)m2;
28
29         if (a>b) {
30              double temp = a;
31               a = b;
32               b = temp;
33         }
34
35         double y1 = Math.ceil(a*(double)k);                //向上取整
36         double y2 = Math.floor(b*(double)k);            //向下取整
37         boolean isEas = true;
38         int flag = 1;            //用flag来判断是否是第一个输出(是否加空格)
39         double i = y1;
40         while (i <= y2) {
41             isEas = true;
42             for (int j = 2; j <= i; j++) {
43                 if (i%j==0&&k%j==0) {            //判断是否为最简形式
44                     isEas = false;
45                     break;
46                 }
47             }
48             if (isEas){
49                 if (flag == 1) {
50                     System.out.print(Math.round(i)+"/"+k);
51                     flag = 0;
52                 }else
53                     System.out.print(" "+Math.round(i)+"/"+k);
54             }
55             i++;
56         }
57         System.out.println();
58     }
59 }
时间: 2024-12-09 23:50:19

PAT——1062. 最简分数的相关文章

PAT 1062. 最简分数(20)

一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数. 输入格式: 输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔.题目保证给出的所有整数都不超过1000. 输出格式: 在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔.行首尾不得有多余空格.题目保证

pat 1062 最简分数(20 分)错误

一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N?1??/M?1?? 和 N?2??/M?2??,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数. 输入格式: 输入在一行中按 N/M 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔.题目保证给出的所有整数都不超过 1000. 输出格式: 在一行中按 N/M 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其

PAT 1062 最简分数

https://pintia.cn/problem-sets/994805260223102976/problems/994805268334886912 一个分数一般写成两个整数相除的形式:/,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 / 和 /,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数. 输入格式: 输入在一行中按 / 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔.题目保证给出的所有整数都不超过 1000.

1062. 最简分数

1062. 最简分数(20)-PAT乙级真题 一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数. 输入格式: 输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔.题目保证给出的所有整数都不超过1000. 输出格式: 在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间

PAT Basic 1062 最简分数 (20 分)

一个分数一般写成两个整数相除的形式:/,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 / 和 /,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数. 输入格式: 输入在一行中按 / 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔.题目保证给出的所有整数都不超过 1000. 输出格式: 在一行中按 / 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其间以 1 个空格分隔.行首尾不得有多余空格.题目保证

PAT 1062 Talent and Virtue[难]

1062 Talent and Virtue (25 分) About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about people's talent and virtue. According to his theory, a man being outstanding in both talent and virtue must be a "sage(圣

PAT 1062. Talent and Virtue (25)

1062. Talent and Virtue (25) About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about people's talent and virtue. According to his theory, a man being outstanding in both talent and virtue must be a "sage(圣人

1062 最简分数 (20 分)

一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N?1??/M?1?? 和 N?2??/M?2??,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数. 输入格式: 输入在一行中按 N/M 的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔.题目保证给出的所有整数都不超过 1000. 输出格式: 在一行中按 N/M 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其

PAT-B 1015. 德才论(同PAT 1062. Talent and Virtue)

1. 在排序的过程中,注意边界的处理(小于.小于等于) 2. 对于B-level,这题是比較麻烦一些了. 源代码: #include <cstdio> #include <vector> #include <algorithm> using namespace std; struct People { int m_id; int m_virtue; int m_talent; People(int id, int virtue, int talent): m_id(id