比赛 |
20120302 |
评测结果 |
AAAAAAAAAAA |
题目名称 |
法雷序列 |
最终得分 |
100 |
用户昵称 |
Makazeu |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2012-03-02 18:24:47 |
显示代码纯文本
/*
PROB: frac1
ID: zyfwork1
LANG: C++
*/
//USACO Ordered Fractions
#include <algorithm>
#include <fstream>
#include <cstdio>
using namespace std;
ifstream fin("frac1.in");
ofstream fout("frac1.out");
int top=0;
struct Fractions
{
double key;
double fenzi;
double fenmu;
int sen;//前驱
int next;//后继
}N[40000];
void Insert(double key,double fenzi,double fenmu)
{
int point=0;
while (key>N[point].key)
{
point=N[point].next;
}
//Create a new node
N[top].key=key;
N[top].fenzi=fenzi;
N[top].fenmu=fenmu;
N[top].next=point;
N[top].sen=N[point].sen;
N[point].sen=top;//後繼的前驅等於自己
N[N[top].sen].next=top;//前驅的後繼等於自己
top++;
}
bool isHZ(int ma,int mi)
{
if (ma==1 && mi==0) return true;
if (ma==1 && mi==1) return true;
if(mi>ma) return false;
if (ma==1) return false;
if (mi==0) return false;
for (int i=2;i<=mi;i++)
{
if (ma%i==0 && mi%i==0) return false;
}
return true;
}
void print()
{
int point=N[0].next;
while(N[point].next!=-1)
{
//fout<<N[point].fenzi<<" "<<N[point].fenmu<<" "<<N[point].key<<" "<<endl;
fout<<N[point].fenzi<<"/"<<N[point].fenmu<<endl;
point=N[point].next;
}
}
int main()
{
N[0].key=-1;N[0].next=1;N[0].sen=-1;
N[1].key=65525;N[1].next=-1;N[0].sen=0;
top=2;
int num;
fin>>num;
for (int i=1;i<=num;i++)
{
for (int j=0;j<=i;j++)
{
if (isHZ(i,j))
{
double di=i;
double dj=j;
Insert(dj/di,dj,di);
}
}
}
print();
return 0;
}