zoukankan      html  css  js  c++  java
  • 洛谷P1458 顺序的分数 Ordered Fractions

    P1458 顺序的分数 Ordered Fractions

      • 151通过
      • 203提交
    • 题目提供者该用户不存在
    • 标签USACO
    • 难度普及-

      讨论  题解  

    最新讨论

    • 暂时没有讨论

    题目描述

    输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1,请找出所有满足条件的分数。

    这有一个例子,当N=5时,所有解为:

    0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1

    给定一个自然数N,1<=n<=160,请编程按分数值递增的顺序输出所有解。

    注:①0和任意自然数的最大公约数就是那个自然数②互质指最大公约数等于1的两个自然数。

    输入输出格式

    输入格式:

    单独的一行一个自然数N(1..160)

    输出格式:

    每个分数单独占一行,按照大小次序排列

    输入输出样例

    输入样例#1:
    5
    
    输出样例#1:
    0/1
    1/5
    1/4
    1/3
    2/5
    1/2
    3/5
    2/3
    3/4
    4/5
    1/1
    

    说明

    USACO 2.1

    翻译来自NOCOW

    分析:看到N这么小,直接枚举这个分数,如果gcd==1记录下答案就可以了吧.排序的时候不要用除法,利用不等式的性质同时乘以两个分母得到的式子来排序即可,同时注意把0/1单独输出.

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    int n,num;
    
    struct node
    {
        int a, b;
    }a[10000];
    
    int gcd(int a, int b)
    {
        if (!b)
            return a;
        return gcd(b, a % b);
    }
    
    bool cmp(node a, node b)
    {
        return a.a  * b.b < b.a * a.b;
    }
    
    int main()
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++)
            for (int j = i; j <= n; j++)
                if (gcd(i, j) == 1)
                {
            a[++num].a = i;
            a[num].b = j;
                }
        sort(a + 1, a + num + 1, cmp);
        printf("0/1
    ");
        for (int i = 1; i <= num; i++)
            printf("%d/%d
    ", a[i].a, a[i].b);
    
        return 0;
    }
  • 相关阅读:
    html5+css3中的background: -moz-linear-gradient 用法 (转载)
    CentOS 安装Apache服务
    Linux 笔记
    CURL 笔记
    Spring Application Context文件没有提示功能解决方法
    LeetCode 389. Find the Difference
    LeetCode 104. Maximum Depth of Binary Tree
    LeetCode 520. Detect Capital
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 136. Single Number
  • 原文地址:https://www.cnblogs.com/zbtrs/p/5902945.html
Copyright © 2011-2022 走看看