题目大意:求热胀后的弧的高度。
解题报告:二分很容易想,数学公式感觉才是难点。其实我一直很怀疑下面的代码的精度问题。当长度改变非常小时,r趋于无穷大,这时精度一定会有影响的。不多代码过了,偶没话说…………
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const double eps=1e-5;
int main()
{
double L,h,c;
double s;
while(scanf("%lf%lf%lf",&L,&h,&c))
{
if(L<0 && h<0 && c<0)
break;
s=L*(1+h*c);
L/=2;
double l=0;
double r=L;
while(r-l>eps)
{
double mid=(l+r)/2;
double rr=(L*L+mid*mid)/(2*mid);
if(2*rr*asin(L/rr)<s)
l=mid;
else
r=mid;
}
printf("%.3lf\n",l);
}
}