记录编号 |
35801 |
评测结果 |
AAAAAAAAAAA |
题目名称 |
法雷序列 |
最终得分 |
100 |
用户昵称 |
Launcher |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.057 s |
提交时间 |
2012-03-03 08:09:13 |
内存使用 |
0.46 MiB |
显示代码纯文本
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("frac1.in");
ofstream fout("frac1.out");
int a[10002][3]={0};
double f[10002]={0};
int zuida(int x,int y)
{
int i,j=0,k;
j=y;
x=x%y;
if (x==0)
{
return j;
}
else
return zuida(y,x);
}
void sort(int l,int r)
{
int i,j,k;
double x,y;
i=l;
j=r;
x=f[(l+r)/2];
do
{
while (f[i]<x) i++;
while (f[j]>x) j--;
if (i<=j)
{
y=f[i];
f[i]=f[j];
f[j]=y;
k=a[i][1];
a[i][1]=a[j][1];
a[j][1]=k;
k=a[i][2];
a[i][2]=a[j][2];
a[j][2]=k;
i++;
j--;
}
}
while (i<=j);
if (l<j) sort(l,j);
if (i<r) sort(i,r);
}
int main()
{
int i,j,k=0,l=0;
int n;
fin>>n;
fout<<0<<'/'<<1<<endl;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
k=0;
if (i<=j)
k=zuida(j,i);
else
k=zuida(i,j);
if ((i<j)&&(k==1))
{
l++;
a[l][1]=i;
a[l][2]=j;
}
}
for (i=1;i<=l;i++)
f[i]=double(a[i][1])/double(a[i][2]);
sort(1,l);
for (i=1;i<=l;i++)
{
fout<<a[i][1]<<'/'<<a[i][2]<<endl;
}
fout<<1<<'/'<<1<<endl;
fin.close();
fout.close();
return 0;
}