首页 > 其他 > 详细

USACO 2.1 Ordered Fractions (frac1)

时间:2014-02-23 02:26:40      阅读:338      评论:0      收藏:0      [点我收藏+]
/*
ID: haolink1
PROG: frac1
LANG: C++
*/

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

class Fraction{
public:
    short up_num_;
    short down_num_;
    Fraction(short up_num,short down_num):
        up_num_(up_num),down_num_(down_num){}
};

bool RelativelyPrime(short num1,short num2);
bool CompareValue(Fraction first, Fraction second);

int main(){
    ifstream fin("frac1.in");
    short num = 0;
    fin >> num;
    vector<Fraction> numbers;
    for(short i = 1; i < num; i++){
        for(short j = i+1; j <= num; j++){
            if(RelativelyPrime(i,j))
                numbers.push_back(Fraction(i,j));
        }
    }
    sort(numbers.begin(),numbers.end(),CompareValue);
    ofstream fout("frac1.out");
    fout<<"0/1"<<endl;
    int numbers_size = numbers.size();
    for(int i =0; i < numbers_size; i++)
        fout << numbers[i].up_num_<<‘/‘<<numbers[i].down_num_<<endl;
    fout<<"1/1"<<endl;
    return 0;
}
/*
bool RelativelyPrime(short num1,short num2){
    short min = num1 <= num2?num1:num2; 
    for(short i = 2; i <= min; i++){
        if(num1%i == 0 && num2%i == 0)
            return false;
    }
    return true;
}
*/
bool RelativelyPrime(short a, short b){
   int r = a % b;
   while(r != 0){
       a = b;
       b = r;
       r = a % b;
   }
   return(b == 1);
}
/*
bool CompareValue(Fraction first, Fraction second){
   if(float(first.up_num_)/first.down_num_ < float(second.up_num_)/second.down_num_) 
       return true;
   else return false;
}
*/
bool CompareValue(Fraction first, Fraction second){
     return first.up_num_*second.down_num_ - second.up_num_*first.down_num_ < 0;
}

USACO 2.1 Ordered Fractions (frac1)

原文:http://blog.csdn.net/damonhao/article/details/19684513

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!