PAT B1062
来源:互联网 发布:淘宝消字灵是真的么 编辑:程序博客网 时间:2024/06/07 04:06
1062. 最简分数(20)
一个分数一般写成两个整数相除的形式: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
#include <cstdio>#include <cmath>using namespace std;struct Fraction{ int up, down;}f1, f2, temp, jll[1010];int gcd(int a, int b){ return !b ? a : gcd(b, a % b); }Fraction reduction(Fraction result){ if(result.down < 0){ result.up = -result.up; result.down = -result.down; } if(result.up == 0){ result.down = 1; } else { int d = gcd(abs(result.up), abs(result.down)); result.up /= d; result.down /= d; } return result;} Fraction minu(Fraction f1, Fraction f2){ Fraction result; result.up = f1.up * f2.down - f2.up * f1.down; result.down = f1.down * f2.down; return result;}void showResult(Fraction r){ r = reduction(r); if(r.down == 1) printf("%d/%d", r.up, r.down); else { printf("%d/%d", r.up, r.down); }}bool pd(Fraction a, Fraction b){ Fraction r; r = minu(a, b); r = reduction(r); if(r.up <= 0){ return false; } else { return true; }}int main(){ int k; scanf("%d/%d", &f1.up, &f1.down); scanf("%d/%d", &f2.up, &f2.down); scanf("%d", &k); int jl = 0; temp.up = 1; temp.down = k; bool _pd1 = pd(temp, f1); //前面大于后面的返回true 否则返回false bool _pd2 = pd(f2, temp); if(_pd1 == true && _pd2 == true){ jll[jl++] = temp; } for(int i = 2; i <= k; i++){ if(gcd(k, i) == 1){ temp.up = i; temp.down = k; bool _pd1 = pd(temp, f1); //前面大于后面的返回true 否则返回false bool _pd2 = pd(f2, temp); if(_pd1 == true && _pd2 == true){ jll[jl++] = temp; } } } for(int i = 0; i < jl; i++){ showResult(jll[i]); if(i != jl - 1){ printf(" "); } } printf("\n"); return 0;}
0 0
- PAT B1062
- PAT B1062
- PAT B1062. 最简分数
- B1062. 最简分数(20)
- pat
- 【PAT】
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- pat
- PAT
- PAT
- ButterKnife 8.+版本在AndroidStudio中的配置
- @RequestMapping用法详解之地址映射(转)
- MySQL 数据库安装教程
- ARC 065D Connectivity 并查集+map
- C# params可变数量参数
- PAT B1062
- confirm、prompt、 window.open
- 面试资料整理
- 异常处理之[Error: com.android.ide.common.process.ProcessException]
- ubuntu12.04 终端中文显示乱码
- idea maven
- PAT B1063
- ZOJ 2671 线段树 + 矩阵区间乘积
- java GUI 学生图书管理简单示例