小车问题

甲、乙两人同时从A地出发要尽快同时赶到B地。出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。

仅一行,三个整数,分别表示AB两地的距离s米(s≤2000),人的步行速度a米/秒,车的速度b米/秒,2000>b>a。

两人同时到达B地需要的最短时间,单位秒,保留2位小数。

120  5  25

9.60


分析,大致如图所示;

现在我们设距离为c,人的速度为a, 车的速度为b;我们现在设如图的三种情况的时间分别为t1,t2,t3;1、2、3号时间具有等价性;

那么就有t1* b  + t2 * a +t3 * a  = c 

                t1 * a +   t2 * a + t3 * b = c ;可以得到t1 = t3 ;

将t1= t3带入得到

( t1 - t2 )  * b = ( t1 + t 2 ) *a  ;

  (    2 * t 1 - t2 ) * b = c ;

化简得到

x = ( a +b ) *c / ( b +3 * a )

时间t= x / b + (c - x)/ a ;

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<iomanip>

using namespace std;

int main()
{
	double a , b , c ;
	double x , sum ;
	double t ;
	cin >> c >> a >> b ;
	x = ( a + b ) * c / ( b + 3 * a ) ;
	t = x / b + ( c - x )/ a ;
	printf( "%.2lf\n" , t ) ;
	return 0 ;
}


 

 

 

posted @ 2013-07-20 18:09  javawebsoa  Views(206)  Comments(0Edit  收藏  举报