• 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 }
  • 相关阅读:
    从解放劳动力来看未来的科技进程
    流程变换与抽象
    EntityFramework Any 生成的sql语句超长。
    值类型引用类型List Remove 方法Remove不掉哪一个项。
    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
    SVN的安装配置(linux)
    【题解】洛谷 P1979 [NOIP2013 提高组] 华容道 | 20211119 模拟赛 Y【BFS 最短路】
    【题解】[Codechef CALLSCHE] Call Center Schedule | 20211127 模拟赛 或负(fortune)【网络流】
    【题解】[Codeforces 1086F] Forest Fires | 20211119 模拟赛 o【插值 扫描线】
    NOIP2021 SC 迷惑行为小赏
  • 原文地址:https://www.cnblogs.com/xiaxj/p/8005284.html
Copyright © 2020-2023  润新知