可推出关于圆弧半径r和h的方程
由①式可化简出
代入②式中可求出l’
把其与根据题目数据求出的l’比较
可得到mid与res的比较关系
从而可以进行二分查找
#include<stdio.h>
#include<math.h>
double L,n,c;
bool judge(double m) {
double t=(m*m+L*L/4.0)/m/2.0;
if(2*asin(L/2.0/t)*t>=(1+n*c)*L)
return true;
else
return false;
}
int main() {
int T,kase=0;
scanf("%d",&T);
while(T--) {
scanf("%lf %lf %lf",&L,&n,&c);
double l=0,r=L;
while(r-l>1e-8) {
double mid=(l+r)/2;
if(judge(mid))
r=mid;
else
l=mid;
}
printf("Case %d: %.8lf
",++kase,r);
}
return 0;
}