#include <iostream>
#include <iomanip>
#include <math.h>
#include <queue>
#define ll long long
using namespace std;
const double esp=1e-6;
int main()
{
double L,n,c;
double r;
while(cin>>L>>n>>c)
{
if (L<0&&n<0&&c<0)
break;
double low=0.0,high=0.5*L,mid,h=0;
double s=(1+n*c)*L,mid_s;
while(high-low>esp)
{
/*
r=(4*h^2+L^2)/(8*h)
s=2r*arctan(L/2*r)
*/
mid=(low+high)/2;
r=(4*mid*mid+L*L)/(8*mid);
mid_s=2*r*asin(L/(2*r));
if (s>mid_s)//弧长比我们猜测的长度大,说明h小了
low=mid;
else
high=mid;
}
h=mid;
cout<<fixed<<setprecision(3)<<h<<endl;
/*浮点输出应该以固定点或小数点表示法显示.
fixed 操作符可能最重要的还是当它与 setprecision 操作符一起使用时,
setprecision 即可以以一种新的方式显示。
它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。
也可以直接printf表示
*/
}
return 0;
}
/*
扇形弧长L=arcsin(弦长/2*r)*2*r
=arcsin(弦长/2r)*pi*r/90;
arcsin怎么算:
因为sin(-pi/2)=-1,所以arcsin(-1)=-pi/2;
因为cos(2pi/3)=-1/2,所以arccos(-1/2)=2pi/3
r=(4h^2+L^2)/(8*h)
s=2r*arctan(L/2r)
*/
/*
math常用函数:
double ceil(double x)
返回不小于参数x的最小整数值,结果返回double形。
sin,cos,tan
asin:反正弦值
acos:反余弦函数数值
exp: 计算以e为底的x次方值,即ex值,然后将结果返回
*/