範例程式碼 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