#include<cstdio>
#include<cmath>
using namespace std;
#define PI 2*asin(1.0)
int main()
{
double len,n,c;
while(scanf("%lf%lf%lf",&len,&n,&c)!=EOF)
{
if(len==-1&&n==-1&&c==-1) break;
double l=(1+n*c)*len;
double left=0;
double right=PI;
double mid=(left+right)/2.0;;
while(fabs(right-left)>=1e-12)
{
mid=(left+right)/2.0;
if(sin(mid)/mid>len/l) left=mid;
else right=mid;
}
printf("%.3f\n",1.0*(1-cos(mid))*len/(2*sin(mid)));
}
}
这题列出的公式没法求解,sin(x)/x=len/l,虽然只有一个未知数!最后听别人说用二分半径(其他公式),那我想二分角度应该也是一样,刚开始还是没思路,因为sin(x)/x的单调性不知道,最后求导得到一个公式(xcosx-sinx)/x2,发现还是不行,继续求导-xsinx,在0-pi是小于0的,递减,原导数小于f'(0)=0,所以sin(x)/x递减,剩下就是二分了。。
不过精度卡的很,1e-12才过掉。。。