PAT 1062 乙等 (最简分数)c++ 版本
来源:互联网 发布:宜家床垫 知乎 编辑:程序博客网 时间:2024/05/19 14:17
慢慢开始总结修改曾经写过的代码。
此题利用C语言的scanf() 输入函数, 方便读取固定格式的输入。
eg: xx/xx ; xx-xx; xx%xx … 之类的输入格式。
#include <iostream>#include <stdio.h>using namespace std;// pat 平台测试点中要求的最简分数分子都小于分母 //寻找最大公约数(展转相除法)int zuiDa(int a, int b){ while(b){ if (b%a == 0) return a; else{ int temp = b%a; b = a; a = temp; } }}int main(){ //a1/b1 , a2/b2 表示两个分数, c为要求输入分母 int a1(0), a2(0), b1(0), b2(0), c(0); scanf("%d/%d %d/%d %d", &a1, &b1, &a2, &b2, &c); for (int i = 1; i < c; i++){ if (zuiDa(i, c) == 1){ if (a1*b2>a2*b1){ //a1/b1 > a2/b2 if (a1*c > i*b1 && a2*c < i*b2){----------// 查找下一个满足条件的分子,如果存在,则输出加空格,否则不加空格// 解释我的解答中,这个for循环为啥不设置边界条件// 循环中间不设边界条件 eg: 满足 31/33 -- 34/33 之间, 分母33(测试 // 点4)// 当i为32时, 查找33是否满足, zuiDa(33,33)最大公约数为33,而且// 33/33// 满足范围要求, 因此查看分子为34的情况, 如果设边界条件 j<=c;则分子//为32// 的情况无法正常输出。---------- for (int j = i + 1; ; j++){ if (zuiDa(j, c) == 1 && a1*c > j*b1 && a2*c < j*b2){ cout << i << "/" << c << " "; break; } if (a1*c <= j*b1){ cout << i << "/" << c; break; } } } } else{ // a1/b1 < a2/b2 if (a1*c <i*b1 && a2*c >i*b2){ for (int j = i + 1; ; j++){ if (zuiDa(j, c) == 1 && a1*c <j*b1 && a2*c >j*b2){ cout << i << "/" << c << " "; break; } if (a2*c <= j*b2){ cout << i << "/" << c; break; } } } } } } return 0;}
0 0
- PAT 1062 乙等 (最简分数)c++ 版本
- PAT 1062最简分数
- PAT 乙级1062最简分数
- PAT Basic 1062. 最简分数(20)(C语言实现)
- PAT B1062. 最简分数
- PAT-B 1062. 最简分数
- [PAT-乙级]1062.最简分数
- 1062. 最简分数(20) PAT
- PAT乙级真题1062最简分数(20)
- PAT (Basic Level) Practise (中文) 1062. 最简分数(20)
- PAT (Basic Level) Practise (中文)1062. 最简分数(20)
- 1062 最简分数
- PAT乙级-1062. 最简分数(20)
- PAT 乙级 1062. 最简分数(20)
- 1062. 最简分数(20) PAT乙级
- PAT BASIC LEVEL 1062. 最简分数(20)
- pat 1062. 最简分数(20) 水
- 1062. 最简分数(20)-PAT乙级
- Struts 04
- slf4j + logback eclipse控制台无法打印输出问题
- ProgressBar:自定义旋转图片
- 数据结构系列(5)树状结构
- WCF之服务寄宿
- PAT 1062 乙等 (最简分数)c++ 版本
- PetaPoco 执行存储过程
- 猫都能学会的Unity3D Shader入门指南(一)
- 运算符
- Java全站乱码终极解决方案
- 【前端攻城狮之路】CSS三列布局——两侧固定宽度、中间自适应
- 题目1442:A sequence of numbers
- JVM学习笔记(六)Java Class类文件结构
- 雅可比矩阵matlab实现