题目描述
甲、乙两人同时从A地出发要尽快同时赶到B地。出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。
输入输出格式
输入格式:
仅一行,三个数据分别表示AB两地的距离s,人的步行速度a,车的速度b。
输出格式:
两人同时到达B地需要的最短时间,保留6位小数。
输入输出样例
输入样例#1:
120 5 25
输出样例#1:
9.600000
小学数学行程问题。
一个人先走,一个人乘车,中途后者下车步行,车返回去接另一个人,最终两个人同时到终点,用时最短。
设x表示在距离终点x单位远时让车折返,
得(s-x)/a=2*(2*x/(a+b)-x/b)+(s-x)/b
化简得x=(b+a)*s/(b+3a)
算时间即可。
顺便学了一下cout控制精度。
1 /*by SilverN*/ 2 #include<iostream> 3 #include<iomanip> 4 #include<algorithm> 5 #include<cstring> 6 #include<cstdio> 7 #include<cmath> 8 double s,a,b,x; 9 using namespace std; 10 int main(){ 11 cin>>s>>a>>b; 12 x=(a+b)*s/(b+3*a); 13 x=(x/b)+(s-x)/a; 14 cout<<setiosflags(ios::fixed); 15 cout<<setprecision(6)<<x<<endl; 16 }