PAT乙级真题1062最简分数(20)

来源:互联网 发布:插画师培训 知乎 编辑:程序博客网 时间:2024/06/06 20:04

大部分借鉴了柳婼 の blog
的代码,自己的就是通过不了,估计gcd写的有问题吧,也懒的debug了。

#include <cstdio>#include <iostream>using namespace std;int gcd(int a, int b) {    return b == 0 ? a : gcd(b, a % b);}int main() {    int n1, m1, n2, 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 num = 1;    bool flag = false;    while (n1 * k >= m1 * num) num++;    while (n1 * k < m1 * num && m2 * num < n2 * k) {        if (gcd(num, k) == 1) {            if (!flag)                flag = true;            else                printf(" ");            printf("%d/%d", num, k);        }        num++;    }    return 0;}}
0 0
原创粉丝点击