欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UVA10566 Crossed Ladders(计算几何+二分)

程序员文章站 2022-06-02 23:19:55
...

UVA10566 Crossed Ladders(计算几何+二分) 

有两把*搭在墙上,给出这两把*的长度 x,y,以及他们的交点,交点的高度为 h,求这两个房屋之间的距离 

    double x,y,h;

bool C(double aim)
{
    double ans=1.0/sqrt(x*x-aim*aim)+1.0/sqrt(y*y-aim*aim);
    if(ans<1/h) return true;
    else return false;
}

int main()
{
    //IOS;
    while(~sfff(x,y,h)){
        double l=0,r=min(x,y),mid;
        while(r-l>eps){
            mid=(l+r)/2;
            if(C(mid)){
                l=mid;
            }
            else{
                r=mid;
            }
        }
        printf("%.3lf\n",mid);
    }
    //PAUSE;
    return 0;
}