解題心得
表面上看起來很容易,但牽扯到數字約分就比較複雜。
要記得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; }
沒有留言:
張貼留言