您的位置:首页 > 其它

POJ 1905 Expanding Rods 解题报告(二分)

2013-08-07 13:37 561 查看
    题目大意:求热胀后的弧的高度。

    解题报告:二分很容易想,数学公式感觉才是难点。其实我一直很怀疑下面的代码的精度问题。当长度改变非常小时,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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分