All pastes #2123002 Raw Edit

Miscellany

public text v1 · immutable
#2123002 ·published 2012-02-29 21:58 UTC
rendered paste body
#include <iostream>
using namespace std;

int count = 0;

class Fraction {
public:
	int num, den;

	Fraction() {
		num = 1;
		den = 1;
	};
	Fraction(int a, int b) {
		num = a;
		den = b;
	};

	bool operator< (Fraction f);
	bool operator> (Fraction f);
	bool operator== (Fraction f);
	bool operator<= (Fraction f);
	bool operator>= (Fraction f);

	string search(Fraction& f, Fraction& g) {
		count++;
		Fraction h = Fraction (f.num + g.num, f.den + g.den);
		if (h == *this)
			return "";
		if (h > *this)
			return "L" + this->search(f, h);
		if (h < *this)
			return "R" + this->search(h, g);
	}	
};
bool Fraction::operator< (Fraction f) {
	int num1 = num*f.den;
	int num2 = den*f.num;
	return (num1 < num2)? true : false;
}
bool Fraction::operator> (Fraction f) {
	int num1 = num*f.den;
	int num2 = den*f.num;
	return (num1 > num2)? true : false;
}
bool Fraction::operator== (Fraction f) {
	int num1 = num*f.den;
	int num2 = den*f.num;
	return (num1 == num2)? true : false;
}

int main() {
	Fraction in, cur_frac;
	cur_frac.num = 1;
	cur_frac.den = 1;

	while (!cin.eof()) {
		int n, d;
		cin >> n >> d;
		Fraction in = Fraction(n, d);
		string out;

		if (in == Fraction(1,1))
			out = "";
		if (in < Fraction(1,1)) {
			Fraction left = Fraction(0,1);
			Fraction right = Fraction();
			out += "L" + in.search(left, right) + "\n";
		}
		if (in > Fraction(1,1)) {
			Fraction left = Fraction();
			Fraction right = Fraction(1, 0);
			out += "R" + in.search(left, right) + "\n";
		}

		cout << out;
	}

	return 0;
}