您的位置:首页 > 其它

1062. 最简分数(20)

2017-10-15 23:33 447 查看
这是一道不错的题目。

考到了分数化简的求最大公因数算法。

再次记忆:

int gcd(int a, int b) { //自己未曾接触过的求两个数最大公因数的算法

return b == 0 ? a : gcd(b, a%b);

}

// 2017/10/14 NCU
// PAT-B 1065
// scienceZ
#include <cstdio>
#include <cstring>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;

int n, a1, a2, b1, b2;
double a, b;
char arr[100];
bool key = true;

int gcd(int a, int b) {    //自己未曾接触过的求两个数最大公因数的算法
return b == 0 ? a : gcd(b, a%b);
}

int main()
{
gets(arr);
int l = strlen(arr);
for(int i = 0; i<l; i++){
if(arr[i] == '/') arr[i] = ' ';
}
stringstream ss(arr);
ss >> a1 >> a2 >> b1 >> b2 >> n;
a = double(a1)/a2;
b = double(b1)/b2;

if (a > b){
double t;
t = a;
a = b;
b = t;
}

for (int i = 1; ;i++){
double c = double(i)/n;
if(c>a && c<b && gcd(i, n) == 1)
if (key) {printf("%d/%d", i, n); key = false;}
else printf(" %d/%d", i, n);
if(c>b) break;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: