小车问题
甲、乙两人同时从A地出发要尽快同时赶到B地。出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。
输入格式:
仅一行,三个整数,分别表示AB两地的距离s米(≤2000),人的步行速度a米/秒,车的速度b米/秒,2000>b>a。
输出格式:
两人同时到达B地需要的最短时间,单位秒,保留2位小数。
样例输入:
120 5 25
样例输出:
9.60
#include<iostream> #include<iomanip> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int x,a,b; double out=0; bool work(double m) { double ans,box,tim; tim=m*1.00/b; box=tim*a; ans=(m-box)/(a+b)*b+x-m;//其实这也算是推出来了? if(ans>=m-0.01&&ans<=m+0.01)//通过对大致取值的预测是可以得到答案的,经过测试发现:本题的小数可以很长... { out=m*1.00/b+(x-m)*1.00/a; return 1; } else return 0; } int main() { cout<<setiosflags(ios::fixed)<<setprecision(2); cin>>x>>a>>b; for(double i=1;i<=x;i+=0.01) { if(work(i)) { cout<<out<<endl; break; } } return 0; }