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