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

    题目描述

    输入一个自然数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

    思路:枚举

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,now;
    struct nond{
        int up,down;
        double value;
    }v[100000];
    int cmp(nond a,nond b){
        return a.value<b.value;
    }
    int gcd(int x,int y){
        return x==0?y:gcd(y%x,x);
    }
    int main(){
        cin>>n;
        cout<<"0/1
    ";
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i-1;j++)
                if(gcd(i,j)==1){
                    v[now].up=j;v[now].down=i;
                    v[now].value=j*1.0/i;now++;
                }
        sort(v,v+now,cmp);
        for(int i=0;i<=now-1;i++)
            cout<<v[i].up<<"/"<<v[i].down<<"
    ";
        cout<<"1/1";
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    samba服务器常用指令
    如何将根文件系统制作成yaffs格式,并设置从yaffs启动
    如何从NFS文件系统启动
    zImage转换为uImage
    转载 uboot 命令
    xml的使用入门
    oracle(2)oracle的基础入门
    redis(3)redis的基础入门(java)
    redis(2)redis的基础入门(linux)
    redis(1)redis的安装
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7881509.html
Copyright © 2011-2022 走看看