您的位置:首页 > 其它

USACO Section 2.1 Ordered Fractions

2017-05-28 19:44 330 查看
/*
ID: lucien23
PROG: frac1
LANG: C++
*/

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

typedef struct Fraction
{
int numerator;
int denominator;
Fraction(){}
Fraction(int x, int y)
{
numerator = x;
denominator = y;
}
} Fraction;

bool isPrimes(int x, int y);

bool compFrac(Fraction frac1, Fraction frac2)
{
if (frac1.numerator/(double)frac1.denominator < frac2.numerator/(double)frac2.denominator)
{
return true;
}
return false;
}

int main()
{
ifstream infile("frac1.in");
ofstream outfile("frac1.out");
if(!infile || !outfile)
{
cout << "file operation failure!" << endl;
return -1;
}

int N;
infile >> N;

vector<Fraction> fractions;
fractions.push_back(Fraction(0, 1));
fractions.push_back(Fraction(1, 1));

for (int i=1; i<=N; i++)
{
for (int j=1; j<i; j++)
{
if (isPrimes(j, i))
{
fractions.push_back(Fraction(j, i));
}
}
}

sort(fractions.begin(), fractions.end(), compFrac);

for (vector<Fraction>::iterator it=fractions.begin(); it!=fractions.end(); it++)
{
outfile << it->numerator << "/" <<it->denominator << endl;
}

return 0;
}

/*
*推断两数是否互质
*/
bool isPrimes(int x, int y)
{
for (int i=2; i<=x; i++)
{
if (x%i == 0 && y%i == 0)
{
return false;
}
}

return true;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: