<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    USACO 1.2.1 Ordered Fractions

    Posted on 2007-06-03 21:13 ZelluX 閱讀(286) 評論(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;
    }

     

    主站蜘蛛池模板: 亚洲精品第一国产综合野| 亚洲激情中文字幕| 婷婷亚洲综合五月天小说在线| 99无码人妻一区二区三区免费| 亚洲精品自拍视频| 久久久久高潮毛片免费全部播放 | 日韩精品亚洲aⅴ在线影院| 久久青青成人亚洲精品| 久久免费国产精品| 国产日韩亚洲大尺度高清| 亚洲日本va在线观看| 成人激情免费视频| 亚洲AV人无码综合在线观看| 国产av无码专区亚洲av毛片搜| 久久久久成人精品免费播放动漫| 在线观看免费a∨网站| 久久亚洲精品国产亚洲老地址| 国产三级在线观看免费| 春暖花开亚洲性无区一区二区| 啊v在线免费观看| 99精品视频免费| 免费一级国产生活片| 色www永久免费| 亚洲国产精品成人精品小说| 在线播放免费人成视频在线观看| 国产精品亚洲小说专区| 亚洲中文字幕无码一区| 久久免费国产视频| 亚洲av无码av制服另类专区| 成人免费福利视频| 无遮挡呻吟娇喘视频免费播放| 精品国产免费观看久久久| 一级毛片高清免费播放| 亚洲精品国精品久久99热| 免费视频成人手机在线观看网址| 亚洲无人区午夜福利码高清完整版 | 美女露隐私全部免费直播| 免费看少妇作爱视频| 久久九九免费高清视频 | 亚洲精品成a人在线观看☆| 无码中文字幕av免费放|