<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 403, comments - 310, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    USACO 1.2.1 Ordered Fractions

    Posted on 2007-06-03 21:13 ZelluX 閱讀(287) 評論(0)  編輯  收藏 所屬分類: Algorithm

    官方的一個很贊的做法,Divide and Conquer,核心部分:

    void
    genfrac(
    int n1, int d1, int n2, int d2)
    {
        
    if(d1+d2 > n)    /* cut off recursion */
            
    return;

        genfrac(n1,d1, n1
    +n2,d1+d2);
        fprintf(fout, 
    "%d/%d\n", n1+n2, d1+d2);
        genfrac(n1
    +n2,d1+d2, n2,d2);
    }


    最樸素的做法

    /*
    PROG: frac1
    ID: 06301031
    LANG: C++
    */


    #include 
    <iostream>
    #include 
    <fstream>
    #include 
    <algorithm>
    #include 
    <vector>
    #include 
    <string>

    using namespace std;

    class Fraction {
        
    int gcd(int x, int y);
    public:
        
    int numerator;
        
    int denominator;
        Fraction(
    int pa, int pb);
        
    bool reductable();
    }
    ;

    bool compareFrac(const Fraction& f1, const Fraction& f2);
    int main() {
        ifstream fin(
    "frac1.in");
        ofstream fout(
    "frac1.out");
        
    int n;
        fin 
    >> n;
        vector
    <Fraction> fracs;
        
    int i, j;
        fracs.push_back(Fraction(
    01));
        
    for (i = 1; i <= n; i++{
            
    for (j = 1; j <= i; j++{
                Fraction frac(j, i);
                
    if (!frac.reductable()) {
                    fracs.push_back(frac);
                }

            }

        }


        sort(fracs.begin(), fracs.end(), compareFrac);
        vector
    <Fraction>::iterator iter;
        
    for (iter = fracs.begin(); iter != fracs.end(); iter++{
            fout 
    << iter->numerator << '/' << iter->denominator << endl;
        }

        
    return 0;
    }


    Fraction::Fraction(
    int pa, int pb) {
        numerator 
    = pa;
        denominator 
    = pb;
    }


    bool Fraction::reductable() {
        
    return (gcd(numerator, denominator) != 1);
    }


    int Fraction::gcd(int x, int y) {
        
    if (x < y) swap(x, y);
        
    if (x % y == 0return y;
        
    return gcd(y, x % y);
    }


    bool compareFrac(const Fraction& f1, const Fraction& f2) {
        
    return (long)f1.numerator * (long)f2.denominator < (long)f1.denominator * (long)f2.numerator;
    }

     

    主站蜘蛛池模板: 色婷五月综激情亚洲综合| 亚洲第一精品福利| 亚洲国产精品成人一区| 久久亚洲AV无码西西人体| 久久亚洲精品中文字幕三区| 亚洲av永久无码精品古装片| 亚洲最大黄色网址| 色偷偷噜噜噜亚洲男人| 丰满人妻一区二区三区免费视频| 日韩电影免费在线观看| 四虎成人免费网址在线| 亚洲区小说区图片区| 亚洲妇女水蜜桃av网网站| 免费大片av手机看片| 97精品免费视频| 亚洲欧洲日产国码一级毛片 | 啦啦啦高清视频在线观看免费| 国产在线不卡免费播放| 亚洲精品91在线| 人人揉揉香蕉大免费不卡| 国产精品冒白浆免费视频| 亚洲黄色在线电影| 中文字幕版免费电影网站| 成人特黄a级毛片免费视频| 久久精品国产亚洲av麻豆| 美女视频黄a视频全免费网站一区| 在线看片免费人成视久网| 亚洲AV之男人的天堂| 亚洲妇女熟BBW| 青青草免费在线视频| 亚洲精品国产第1页| 91精品国产免费网站| 在线观看亚洲一区二区| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲综合欧美色五月俺也去| 99精品热线在线观看免费视频| 亚洲人成人一区二区三区| 特级无码毛片免费视频| 免费夜色污私人影院在线观看| 含羞草国产亚洲精品岁国产精品|