题目链接:点击查看

题目描述:

一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0。最简分数是指分子和分母没有公约数的分数表示形式。现给定两个不相等的正分数 N​1​​/M​1​​ 和 N​2​​/M​2​​,要求你按从小到大的顺序列出它们之间分母为 K 的最简分数。

输入输出:

输入

7/18 13/20 12

输出

5/12 7/12

题目分析:

如果输入的第一个分数比第二个分数大,则将两个分数进行交换。对于要求的指定分母的分数,我们先通过一个while循环,此分数大小置于输入的两分数之间,在用另一个while循环对两分数之间的分数进行是否为最简分数的判断,在判断时我们使用辗转相除法(欧几里得算法),如最大公因数为1,则两数互质,即为最简分数。详见如下代码。

代码:

#include<iostream>
using namespace std;
int gcd(int a,int b)
{return b==0?a:gcd(b,a%b);
}
int main()
{int n1,n2,m1,m2,k;scanf("%d/%d %d/%d %d",&n1,&m1,&n2,&m2,&k);if(n1*m2>n2*m1)//第一个分数比第二个分数大{swap(n1,n2);swap(m1,m2); } int numerator=1;//将分子初始化为1 int isFirst=0;//用来标识是否为第一次输出 while(n1*k>=m1*numerator)//将要求分数置于输入的两个分数之间 {numerator++;}while(m2*numerator<n2*k)//基本条件:比第二个分数小 {if(gcd(numerator,k)==1){isFirst==1?printf(" %d/%d",numerator,k):printf("%d/%d",numerator,k);isFirst=1;}numerator++; }return 0;
}

PAT Basic Level 1062 最简分数(辗转相除法)相关推荐

  1. PAT Basic level 1062 最简分数 (20分)

    1062 最简分数 (20分) 一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1 /M1和 N2/M2 , ...

  2. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  3. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  4. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  5. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  6. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

  7. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  8. 卡拉兹(Callatz)猜想,PAT(Basic Level) Practise NO.1001

    PAT(Basic Level) Practise NO.1001 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半. 这样 ...

  9. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

最新文章

  1. 这就是芬兰:先让全国1%的人学起AI!
  2. Ehcache学习笔记(一)基础入门
  3. photoshop切片的取消操作
  4. 关于一个局部变量未初始化引发的项目异常退出问题
  5. 【Python】Cookie 和 Session
  6. java用户里获取部门id_javaWeb开发,根据部门ID查询该部门和下属所有部门的ID集合...
  7. 他无一纸文凭,何以成为清华教授,被誉为“三百年才出一个的大师”?
  8. python特性 property_python之中特性(attribute)与属性(property)有什么区别?
  9. SpringBoot中AOP实现落地——Filter(过滤器)、Intercepter(拦截器)、Aspect(Spring AOP)
  10. Segmentation and Paging
  11. 是什么决定了创业的成败?
  12. SSH 无法远程登录问题的处理思路
  13. 【问题解决方案】anaconda-python在cmd-pip安装requests后依然提示No module named requests
  14. 破旧手机改造系列:最牛逼的行车记录仪
  15. rds是什么云模式_IaaS、PaaS、SaaS、DaaS都是什么?
  16. 中标麒麟linux配置网卡,中标麒麟Linux v7系统下设置双网卡bond或team绑定详细过程...
  17. linux保险箱软件,手机加密App哪个好?手机加密软件推荐
  18. vivoX80Pro和华为P50Pro哪个值得入手参数对比
  19. java groovy集成_java与Groovy的整合
  20. 记录一次docker基础操作错误Error response from daemon: You cannot remove a running container

热门文章

  1. The Old Man and the Sea-读书笔记(20130908)
  2. linux 下 privoxy 设置代理
  3. 常用原料药缬沙坦价格暴涨
  4. COLING 2022 | CogBERT:脑认知指导的预训练语言模型
  5. IT行业能做到多少岁
  6. 自学编程 10000 小时
  7. python执行不了elif_python循环的elif报错是什么原因
  8. oracle ogg巡检,述说OGG检查点
  9. 华为电脑使用ipad做扩展显示屏
  10. 网球初学者网球拍的推荐