您的位置:首页 > 其它

Ordered Fractions

2010-12-22 17:29 183 查看
贪心,从小到大依次考虑每一个分母

denominator

,对每一个分母再考虑每一个分子

numerator

,若gcd(nu,d)=1,则是真分数,输出。否则continue.

#include<cstdio>
#include<iostream>
#include<fstream>
#include<algorithm>
#include<string>
#include<assert.h>
#include<string.h>
using namespace std;
#define N 161
int n;
struct frac{
int nu,d;
}f[13041];
int cnt;
bool cmp(frac const &a,frac  const &b){
return a.nu*1.0/a.d<b.nu*1.0/b.d;
}
int gcd(int a,int b){
if(!b)return a;
return gcd(b,a%b);
}
void getFactions(){
cnt=0;
f[cnt].nu=0;f[cnt].d=1;
cnt++;
f[cnt].nu=1;f[cnt].d=1;
cnt++;
int i,j;
for(i=2;i<=n;i++){
for(j=1;j<i;j++){
if(gcd(i,j)==1){
f[cnt].nu=j;
f[cnt++].d=i;
}
}
}
}
int main(){
freopen("frac1.in","r",stdin);
freopen("frac1.out","w",stdout);

cin>>n;

getFactions();
sort(f,f+cnt,cmp);
int i;
for(i=0;i<cnt;i++){
cout<<f[i].nu<<'/'<<f[i].d<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: