範例程式碼 uva12970

//uva12970
#include <iostream>

using namespace std;

unsigned long long gcd(unsigned long long a, unsigned long long b) {
    return (b == 0) ? a : gcd(b, a % b);
}

int main() {
    unsigned long long v1, d1, v2, d2;
    unsigned long long t1, t2;
    unsigned long long i = 0;
    unsigned long long a, b, g;
    while (cin >> v1 >> d1 >> v2 >> d2) {
        if (v1 == 0 && d1 == 0 && v2 == 0 && d2 == 0)
            break;
        t1 = d1 * v2;
        t2 = d2 * v1;
        cout << "Case #" << ++i;
        if (t1 < t2)
            cout << ": You owe me a beer!" << endl;
        else
            cout << ": No beer for the captain." << endl;
        a = d1 * v2 + d2 * v1;
        b = 2 * v1 * v2;
        if (a >= b) {
            g = gcd(a, b);
            a /= g;
            b /= g;
            if (b == 1)
                cout << "Avg. arrival time: " << a << endl;
            else
                cout << "Avg. arrival time: " << a << "/" << b << endl;
        } else {
            g = gcd(b, a);
            a /= g;
            b /= g;
            cout << "Avg. arrival time: " << a << "/" << b << endl;
        }
    }
}

// equation:
// (d1/v1 + d2/v2)/2
// = ( (d1*v2 + d2*v1)/v1*v2 )/2
// = (d1*v2+d2*v1)/v1*v2*2
// ���� �� gcd