解題心得
表面上看起來很容易,但牽扯到數字約分就比較複雜。
要記得gcd怎麼寫。
程式碼
#include <iostream>
using namespace std;
long long int gcd(long long int a, long long int b)
{
while((a%=b)!=0 && (b%=a)!=0);
return a+b;
}
int main()
{
int count=1;
long long int v1, d1, v2, d2;
while(cin>>v1>>d1>>v2>>d2)
{
if(v1==0 && d1==0 && v2==0 && d2==0) break;
cout<<"Case #"<<count++<<": ";
if(float(d1)/v1 < float(d2)/v2)
cout<<"You owe me a beer!"<<endl;
else
cout<<"No beer for the captain."<<endl;
cout<<"Avg. arrival time: ";
long long int up, down,_gcd;
up=d1*v2 + d2*v1;
down=2*v1*v2;
_gcd=gcd(up,down);
up/=_gcd, down/=_gcd;
if(down==1)
cout<<up<<endl;
else
cout<<up<<"/"<<down<<endl;
}
return 0;
}
沒有留言:
張貼留言