PTA乙级1062

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

1062

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

输入格式:

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

输出格式:

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

输入样例:

7/18 13/20 12

输出样例:

5/12 7/12

思路:我的想法是得到分子分母,然后根据题目要求是要从小到大,那就先让要比较的两个分数先从小到大排列,然后在与num/k通分的情况下让num/k在两分数之间变化,因为题目要求的是结果以分母为k,所以就直接变化num就行了从,num1开始增加用while循环进行判断,当num与k的最大公约数为1的时候且在指定范围内则满足要求直接输出,这里部分代码我参考了大佬的,但是不是很懂printf("%s%d/%d", flag == true ? " " : "", num, k);其中的flag是个什么用法所以就没有引用还是以最古老的方式输出.
代码:

package PTA2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class PTA1062 { 
    public static void main(String[] args) throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] s = br.readLine().split(" "); String[] sm = s[0].split("/"); int n1 = Integer.parseInt(sm[0]), m1 = Integer.parseInt(sm[1]);//第一个分母和分子 String[] bi = s[1].split("/"); int n2 = Integer.parseInt(bi[0]), m2 = Integer.parseInt(bi[1]);//第二个分母和分子 int k = Integer.parseInt(s[2]); if(n1 * m2 > n2 * m1) { 
   //替换一下位置使其从小到大方便后面使用 int temp = n1; n1 = n2; n2 = temp; temp = m1; m1 = m2; m2 = temp; } int num = 1;//这是num/k中的num,num为分子 while(n1 * k >= m1 * num) { 
   //使num/k比/n1/m1大获得num的值 num++; } while(n1 * k < m1 * num && m2 * num < n2 * k) { 
   //在num/k比n2/m2小的情况下增加num的值,当k与num的最大公约为1时获得一个题目要求的分数,同时能保证从小到大输出 if(gcd(k, num) == 1) { 
    System.out.print(num+"/"+k+" "); } num++; } } private static int gcd(int a, int b){ 
   //求最大公约数 int t=0; while (a%b!=0){ 
    t=a%b; a=b; b=t; } return b; } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177708.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:54
下一篇 2026年3月26日 下午6:54


相关推荐

  • centos7如何关闭linux防火墙(centos关闭防火墙)

    在某些场景中我们会希望能够关闭防火墙,比如ftp连不上,又不想在iptable中添加端口配置,那么我直接就把防火墙给关了。下面是學習啦小編收集整理的centos如何关闭防火墙,希望對大家有幫助~~centos关闭防火墙工具/原料操作系统:centos6.5方法/步骤查看防火墙状态:命令:/etc/init.d/iptablesstatus如果是开着显示内容类是截图临时关闭防火墙:命令:…

    2022年4月11日
    114
  • elasticsearch部署方案_elasticsearch实例

    elasticsearch部署方案_elasticsearch实例来源:http://www.linuxidc.com/Linux/2015-02/114243.htm开始研究搜索了,在自己虚拟机上搭建了一个简易ElasticSearch搜索集群,与大家分享一下,希望能有所帮助。操作系统环境: RedHat 4.8.2-16elasticsearch:elasticsearch-1.4.1集群搭建方式:一台虚拟

    2022年10月13日
    4
  • Linux配置静态IP地址「建议收藏」

    Linux配置静态IP地址「建议收藏」Linux配置静态IP地址

    2022年4月22日
    50
  • 一问彻底理解dubbo主流程

    一问彻底理解dubbo主流程

    2021年8月4日
    51
  • 卸载ufw-小白实操记录

    卸载ufw-小白实操记录可以删除或者禁用 ufw 不存在任何问题 它不会影响你的 iptables 配置 UFW 非复杂防火墙 只是为了简化使用 iptables 的一些配置而开发 1 禁用 ufw 要禁用 UFW 可以键入以下内容 sudoufwdisab 卸载 ufw 如果要删除它 可以输入以下命令 sudoapt getremoveufw 清除依赖包 sudoapt getpurgeufw

    2026年3月17日
    2
  • PCIe扫盲——Flow Control基础(一)

    PCIe扫盲——Flow Control基础(一)FlowControl即流量控制,这一概念起源于网络通信中。PCIe总线采用FlowControl的目的是,保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP(事务层包)。也就是说,发送端在发送前可以通过FlowControl机制知道接收端能否接收即将发送的TLP。在PCI总线中,并没有FlowControl这样的机制,因此发送端并不知道当前时刻,接收端能否接收对应的TLP。因此,发送端只能先尝试发送,期间可能会被插入多个等待周期(接收设备尚未就绪等原因),甚至是重发(Re

    2022年5月15日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号