比赛 20120302 评测结果 AAAAAAAAAAA
题目名称 法雷序列 最终得分 100
用户昵称 Launcher 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-02 20:00:11
显示代码纯文本
#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;
	
}