比赛 |
20120302 |
评测结果 |
AAAAAAAAAAA |
题目名称 |
法雷序列 |
最终得分 |
100 |
用户昵称 |
TBK |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2012-03-02 21:02:14 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
using namespace std;
int a,b,c,d=1,t;
struct fun
{
double x;
int y;
int z;
}f[10000];
int Compare( const void *elem1 , const void *elem2 )
{
struct fun *elem3 = (struct fun *)elem1;
struct fun *elem4 = (struct fun *)elem2;
return (elem3->x > elem4->x)?1:-1;
}
int gcd(int p,int q)
{
if (p==0) return q;
if (q==0) return p;
if (p<q)
{
t=p;
p=q;
q=t;
}
if (p%q==0) return q;
return gcd(q,p%q);
}
int main(void)
{
freopen ("frac1.in","r",stdin);
freopen ("frac1.out","w",stdout);
scanf("%d",&a);
if (a==0) exit(0);
f[0].x=0;
f[0].y=0;
f[0].z=1;
for (b=1;b<=a;b++)
for (c=a;c>=b;c--)
if (gcd(b,c)==1)
{
f[d].x=(double)((double)b/(double)c);
f[d].y=b;
f[d].z=c;
d++;
}
qsort(f,d,sizeof(fun),Compare);
for (b=0;b<d;b++) printf("%d/%d\n",f[b].y,f[b].z);
fclose(stdin);
fclose(stdout);
return 0;
}