# include <stdio.h>
# include <math.h>
double eps=1e-12;
double pi=acos(-1.0);
int zero(double x,double y)
{
return fabs(x-y)<eps;
}
int main()
{
//printf("%lf\n",pi);
double a,a2,n,c;
while(scanf("%lf%lf%lf",&a,&n,&c)!=EOF)
{
if(a<0.0&&n<0.0&&c<0.0)
break;
if(a==0||n==0||c==0)
{printf("0.000\n");continue;}
a2=(1+n*c)*a;
double mid,beg=0.0,end=pi;
while(beg<=end-eps)
{
mid=(beg+end)/2;
double ans1,ans2;
ans1=sin(mid)*a2;
ans2=mid*a;
if(zero(ans1,ans2))
break;
if(ans1<ans2)
end=mid;
else
beg=mid;
}
double r=a2/mid/2;
printf("%.3lf\n",r-sqrt(r*r-(a/2)*(a/2)));
}
return 0;
}
二分 二分的时候注意对精度的判断beg<end-eps 否则容易出现负值
zoj2370
最新推荐文章于 2019-01-06 16:09:43 发布