码迷,mamicode.com
首页 > 其他好文 > 详细

acd the cover circle(分情况讨论)

时间:2014-05-25 18:26:55      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   c   code   

Problem Description

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

Input

输入包含多组数据,EOF结束。

每组数据包含一行,分别是两个实数w和h代表矩形的长和宽。

0<w,h<10000

Output

每组数据输出一行表示圆的半径,小数点后保留三位。

Sample Input

2.000 1.000

Sample Output

0.500

(前提w>=h)当W>=2*h时,r=h/2; 当w<2*h时,两圆在巨型内斜着紧靠着,并两圆紧贴着边,根据计算可得 r*r-(w+h)*r+(w*w+h*h)/4=0 再解方程。

#include<stdio.h>
#include<math.h>
int main()
{
    double w,h,r,r1,b,c;
    while(scanf("%lf%lf",&w,&h)!=EOF)
    {
        if(w<h)
        {
            r=w; w=h; h=r;
        }
        if(w>=2*h)
            r=h/2;
        else
        {
            b=-(w+h); c=(w*w+h*h)/4.0;
            r=(-b+sqrt(b*b-4*c))/2;
            r1=(-b-sqrt(b*b-4*c))/2;
            if(r>h/2||r<r1&&r1<=h/2)r=r1;
        }
        printf("%.3lf\n",r);
    }
}


acd the cover circle(分情况讨论),布布扣,bubuko.com

acd the cover circle(分情况讨论)

标签:des   style   class   blog   c   code   

原文地址:http://blog.csdn.net/u010372095/article/details/26823429

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!