1 /*UVA10566
2 平面几何:
3 相似三角形,公式法。
4 但是关键是设变量角度rad,通过分析,可知计算出来的y是一个单调函数,当y恰好等于给定y时,对应的角度就是解题的关键
5 这样,就可以通过二分逼近答案了
6 but,but,but;
7 调试过程中,发现是一个凸函数,故转而用三分解决。
8 but,but,but;
9 答案不对,最终知道,还是二分,为什么像三分呢,因为二分变量的取值范围不对了。(这点是日后要注意的)
10 所以下次尽量保证代数式的范围正确性
11 */
12 #include<iostream>
13 #include<stdio.h>
14 #include<string.h>
15 #include<algorithm>
16 #include<stdlib.h>
17 #include<cmath>
18 #include<queue>
19 #include<vector>
20 #include<map>
21 #define LL long long
22
23 using namespace std;
24
25 double x,y,c;
26 double F(double rad)//F是单调递减函数
27 {
28 double d,d1,d2,Y;
29 d=x*cos(rad);
30 d2=c/tan(rad);
31 d1=d-d2;
32 Y=d*sqrt(d1*d1+c*c)/d1;
33 return Y-y;
34 }
35 int main()
36 {
37 while(cin>>x>>y>>c)
38 {
39 double L=asin(c/x)+1e-7,R=M_PI/2-L;
40 int t=0;
41 while(t<100)
42 {
43 t++;
44 double m=(R+L)/2;
45 if(F(m)<0) R=m;else L=m;
46 }
47 // for(double i=asin(c/x)+0.001;i<M_PI/2;i=i+0.1) cout<<i<<","<<F(i)<<endl;
48
49 printf("%.3lf\n",x*cos(L));
50 }
51 return 0;
52 }