[题目] Section 2.1 OrderedFractions(USACO)

来源:互联网 发布:淘宝客怎么开通教程 编辑:程序博客网 时间:2024/06/05 22:40


[题意]给出一个整数N,找出一组真分数,使得他们的分子分母都不大于N.以分数形式从小到大输出这组数。

[思路]不要想如何排序了,set解决!枚举所有分数,先判断是否最简,然后加入set中即可。

[代码]

#include<cstdio>#include<iostream>#include<set>#include<string>#include<cstdlib>using namespace std;struct haha{    double num;    string str;    bool operator < (consthaha &a) const    {        return a.num>num;    }}ha;int main(){    int n;cin>>n;    set<haha> se;    set<haha>::iterator it;    for(int i=2;i<=n;i++)        for(int j=1;j<i;j++){        if((i%j)>0||j==1){            char st[10];            char st2[10];            sprintf(st,"%d", j);            sprintf(st2,"%d", i);           ha.num=(double)j/(double)i;            strings=st;s=s+'/';s+=st2;            ha.str=s;            se.insert(ha);        }    }   cout<<"0/1"<<endl;   for(it=se.begin();it!=se.end();it++)       cout<<it->str<<endl;   cout<<"1/1"<<endl;}


0 0