zoukankan      html  css  js  c++  java
  • USACO sec2.1 Ordered Fractions

    首先两重 for 循环对可能取的值约分,分子分母分别存放,根据比较分数大小的方法排序,然后按顺序输出(相同的只输出一个);

    /*
    PROG : frac1
    LANG : C++
    */
    # include <stdio.h>
    # include <stdlib.h>
    
    # define MAXN (160 * 160)
    
    /***************************************************/
    int num[MAXN], den[MAXN], r[MAXN], m = 0;
    int cmp(const void *xx, const void *yy)
    {
        int x = *(int*)xx;
        int y = *(int*)yy;
        return num[x]*den[y] > den[x]*num[y] ? 1 : -1;
    }
    
    int gcd(int a, int b)
    {
        if (!b) return a;
        return gcd(b, a%b);
    }
    
    void solve(void)
    {
        int i, j, n;
        scanf("%d", &n);
        num[0] = 0, den[0] = 1;
        for (i = 1; i <= n; ++i)
        for (j = 1; j <= n; ++j)
        {
            if (i > j) continue;
            ++m;
            num[m] = i/gcd(i, j);
            den[m] = j/gcd(i, j);
        }
        for (i = 0; i <= m; ++i) r[i] = i;
        qsort(r, m, sizeof(r[0]), cmp);
        printf("%d/%d\n", num[r[0]], den[r[0]]);
        for (i = 1; i <= m; ++i)
        {
            if (num[r[i]] == num[r[i-1]] && den[r[i]] == den[r[i-1]])
                continue;
            else
                printf("%d/%d\n", num[r[i]], den[r[i]]);
        }
    }
    
    /***************************************************/
    
    int main()
    {
        freopen("frac1.in", "r", stdin);
        freopen("frac1.out", "w", stdout);
        
        solve();
        
        fclose(stdin);
        fclose(stdout);
        
        return 0;
    }
  • 相关阅读:
    MYSQL limit用法
    mybaties mapping中if
    执行数据库同时又调接口
    WITH (NOLOCK)
    SpringMVC转发和重定向区别!
    MyBatis的foreach语句详解
    SSM mapper.xml
    win7与virtualbox中centos文件共享
    PBOC2.0中消费交易流程
    PBOC2.0协议中电子存折/电子钱包中圈存交易流程
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2649232.html
Copyright © 2011-2022 走看看