B. Water Lily
While sailing on a boat, Inessa noticed a beautiful water lily flower above the lake's surface. She came closer and it turned out that the lily was exactly HH centimeters above the water surface. Inessa grabbed the flower and sailed the distance of LL centimeters. Exactly at this point the flower touched the water surface.
Suppose that the lily grows at some point AA on the lake bottom, and its stem is always a straight segment with one endpoint at point AA. Also suppose that initially the flower was exactly above the point AA, i.e. its stem was vertical. Can you determine the depth of the lake at point AA?
Input
The only line contains two integers HH and LL (1≤H<L≤1061≤H<L≤106).
Output
Print a single number — the depth of the lake at point AA. The absolute or relative error should not exceed 10−610−6.
Formally, let your answer be AA, and the jury's answer be BB. Your answer is accepted if and only if |A−B|max(1,|B|)≤10−6|A−B|max(1,|B|)≤10−6.
Examples
input
1 2
output
1.5000000000000
input
3 5
output
2.6666666666667
回想起被三角函数支配的恐惧。。。
其实很简单,设水深x,莲花高度y,则可得到:
x+H=y
x^2+L^2=y^2
化简可得 x=(L^2+H^2)/(2*H)
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
int main()
{
double h,l;
cin>>h>>l;
printf("%.13lf",fabs((h*h-l*l)/(2*h)));
return 0;
}