您的位置:首页 > 其它

1062. 最简分数(20)

2017-12-27 21:20 316 查看

一、题目



二、个人理解

Tips:

给的两个分数不知道谁大谁小

题目说的是之间,所以不包括边界

C++:

#include <iostream>
#include <stdio.h>
using namespace std;
//最大公约数
int gcd(int a, int b)
{
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
/*
两个坑:
1、给的两个分数不知道谁大谁小
2、题目说的是之间,所以不包括边界
*/
int main()
{
int a1, b1, a2, b2, k;
scanf("%d/%d %d/%d %d", &a1, &b1, &a2, &b2, &k);
double first = double(a1 * k) / (double)b1 ;
double second = double(a2 * k) / (double) b2 ;
if (second < first) {
swap(first, second);
}
first++;
if (second == int(second)) {
second--;
}
int tag = 1;//格式化输出用
for (int i = first; i <= second; i++) {
if (gcd(i, k) == 1 ) {
if (tag ) {
cout << i << "/" << k;
tag = 0;
} else {
cout << " " << i << "/" << k;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: