洛谷P1258 小车问题

 

题目描述

甲、乙两人同时从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 }

 

posted @ 2016-10-10 23:17  SilverNebula  阅读(413)  评论(0编辑  收藏  举报
AmazingCounters.com