UVa 10566 - Crossed Ladders

设宽度为w,二分w。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <algorithm>
 4 
 5 #define eps 1e-6
 6 
 7 using namespace std;
 8 
 9 int main()
10 {
11     double x, y, c;
12     while ( ~scanf( "%lf%lf%lf", &x, &y, &c ) )
13     {
14         double high = min( x, y );
15         double low = 0.0;
16         double mid;
17         while ( low < high )
18         {
19             mid = ( low + high ) / 2.0;
20             double cc = sqrt( x*x - mid*mid )*sqrt( y*y - mid*mid ) / ( sqrt( y*y - mid*mid ) + sqrt( x*x - mid*mid ) );
21             if ( fabs( cc - c ) < eps )
22             {
23                 break;
24             }
25             else if ( cc < c ) high = mid;
26             else low = mid;
27         }
28 
29         printf( "%.3f\n", mid );
30     }
31     return 0;
32 }

 

posted @ 2013-06-15 23:44  冰鸮  阅读(348)  评论(0编辑  收藏  举报