您的位置:首页 > 其它

[USACO 2.1.2]顺序的分数

2013-01-29 22:30 495 查看
地址:http://hustoj.sinaapp.com/problem.php?id=1838

笨办法

先列出所有分母不大于n的真分数,用二维数组储存,然后按分数大小排序

输出的时候按顺序来,选gcd(分子, 分母)=1的输出

#include <iostream>
#include <algorithm>
#define MAX 160
using namespace std;

int n;
int **f=new int *[MAX*(MAX-1)/2+2];

bool cmp(int *a,int *b)
{
double x,y;
x=(double)a[0]/(double)a[1];
y=(double)b[0]/(double)b[1];
return x<y;
}

int main()
{
ios::sync_with_stdio(false);
cin>>n;
int l=n*(n-1)/2+2;
int i=0;
f[i]=new int[2];
f[i][0]=0;
f[i][1]=1;
i++;
while(i<l)
{
if(i==l-1)
{
f[i]=new int[2];
f[i][0]=f[i][1]=1;
break;
}
for(int j=n;j>1;j--)
for(int k=1;k<j;k++)
{
f[i]=new int[2];
f[i][0]=k;
f[i][1]=j;
i++;
}
}
sort(f,f+l,cmp);
for(i=0;i<l;i++)
{
if(__gcd(f[i][0],f[i][1])==1) cout<<f[i][0]<<"/"<<f[i][1]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: