二分,至今仍不知为什么事单调关系,但是做此题之前,知道此题考查二分,所以就递增和递减都做了一下,最后发现是单调递增的;

#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;
}


 

posted on 2012-06-15 19:40  lishimin_come  阅读(99)  评论(0编辑  收藏  举报