//使用二分法解方程,测试数据过了,但提交WA.(已改正确)
地址:http://acm.zju.edu.cn/show_problem.php?pid=2370
#include <stdio.h>
#include <math.h>
int main()
{
double l,c,n,ll,t,min,max,mid,y,r,h;
while(scanf("%lf%lf%lf",&l,&n,&c))
{
if(l==-1&&n==-1&&c==-1)
break;
if(n==0||c==0)
printf("%.3lf/n",0);
else
{
ll=(1+c*n)*l;
t=l/ll;
//printf("%lf/n",t);
min=0;
max=3.1415927;
while(true)
{
mid=(min+max)/2;
y=sin(mid)-t*mid;
if(y>0.00000000000001)
min=mid;
else if(y<0)
max=mid;
else break;
}
//printf("%lf/n",mid);
r=(l/2.0)/sin(mid);
h=r-r*cos(mid);
printf("%.3lf/n",h);
}
}
}
//正确版本:
#include <stdio.h>
#include <math.h>
int main()
{
double l,c,n,ll,t,min,max,mid,y,r,h;
while(scanf("%lf %lf %lf",&l,&n,&c)!=-1)
{
if(l==-1&&n==-1&&c==-1)
break;
if(n*c==0)
printf("%.3lf/n",0.0);
else
{
ll=(1+c*n)*l;
t=l/ll;
//printf("%lf/n",t);
min=0;
max=acos(-1)/2;
for(int i=0;i<100;i++)
{
mid=(min+max)/2;
y=sin(mid)-t*mid;
if(y>0)
min=mid;
else
max=mid;
}
//printf("%lf/n",mid);
h=(1-cos(mid))*ll/2/mid;
printf("%.3lf/n",h);
}
}
}