Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

//这个题看你二分的对象了,

//二分范围最小的对象,效率会是最快的,

//题目里面可以二分的对象有几个,但他们的

//意义是相等的,只是精度不同,所以要保证

//精确,就要选取范围最小的对象,这样精度会最好..

代码如下:

View Code
//这个题看你二分的对象了,
//二分范围最小的对象,效率会是最快的,
//题目里面可以二分的对象有几个,但他们的
//意义是相等的,只是精度不同,所以要保证
//精确,就要选取范围最小的对象,这样精度会最好..
#include <iostream>
#include
<cstring>
#include
<algorithm>
#include
<climits>
#include
<cstdio>
#include
<cstring>
#include
<cmath>




using namespace std;

const double EPS=1e-12;
const double PI=acos(-1.0);



int main()
{
//freopen("input.txt","r",stdin);
double L,n,C;
while(scanf("%lf %lf %lf",&L,&n,&C)!=EOF)
{
if(L<0 && n<0 && C<0)
break;
double LL=(1+n*C)*L;

double lo=0,hi=PI;
double mid;

while(lo<hi-EPS)
{
mid
=(lo+hi)/2;
double r=LL/mid;
if(2*r*sin(mid/2)>L)
lo
=mid;
else
hi
=mid;


}


double r=LL/mid;
double res=r-sqrt(r*r-L*L/4);
printf(
"%0.3lf\n",res);
}
return 0;
}

posted on 2011-04-23 10:07  Jackiesteed  阅读(128)  评论(0编辑  收藏  举报