您的位置:首页 > 其它

文章标题

2016-05-29 17:02 246 查看

题意:

用半径相等的两个圆覆盖一个w*h的矩形,要求两圆不相交且必须在矩形内。求覆盖面积最大时两圆半径。


思路:

直接用二分法,题目要求输出小数点后三位。
ESP的应用。


#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const double ESP=1e-8;
int main ()
{
double a,b;
while(scanf("%lf%lf",&a,&b)!=EOF)
{
if(a<b)
swap(a,b);
double l,r,mid,dis;
l=0,r=b/2;
while(r-l>ESP){
mid=(r+l)/2;
dis=sqrt((a-2*mid)*(a-2*mid)+(b-2*mid)*(b-2*mid))/2.0;
if(dis>mid)
l=mid;
else r=mid;
}
printf("%.3f\n",l);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: