二分,至今仍不知为什么事单调关系,但是做此题之前,知道此题考查二分,所以就递增和递减都做了一下,最后发现是单调递增的;
#include <stdio.h>
#include <math.h>
int main()
{
double l,n,c;
while(scanf("%lf %lf %lf",&l,&n,&c))
{
if(l<0) break;
double ll,ang;
ll=(1+n*c)*l;
double high=l;//为了保险定大一点
double low=0;
double mid;
while((high-low)>1e-5)
{
mid=(high+low)/2;
double r=(l*l+4*mid*mid)/(8*mid);
if((2*r*asin(l/(2*r)))<ll)
low=mid;
else
high=mid;
}
printf("%.3lf\n",low);//输出high,mid都可以因为有精度保证,最后结果都一样
}
return 0;
}