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";
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    代理模式
    栈和队列----按照左右半区的方式重新组合单链表
    栈和队列----合并两个有序的单链表
    Java中的线程池
    SpringMVC中的参数绑定
    Mybatis常见面试题汇总
    ADC裸机程序
    用uart实现printf函数
    uarts裸机程序
    定时器裸机程序
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7881509.html
Copyright © 2011-2022 走看看