⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2015.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 2015 on 2005-09-17 at 14:22:39 */ 
#include <stdio.h>
#include <math.h>

double com(double, double);
int f(double);

double x, y, c;

int main()
{
    double temp;
    
    while(scanf("%lf %lf %lf", &x, &y, &c) == 3) {
        if(x - y > 0) {
            temp = x;
            x = y;
            y = temp;
        }    
        printf("%.3lf\n", com(0, x));
    }
}

double com(double p, double q)
{
    double middle = (p + q) / 2;
    int i = f(middle), j = f(p), k = f(q);
    
    if(q - p <= 1e-3) {
        return middle;
    } else if(i == 0) {
        return middle;
    } else if(j == 0) {
        return p;
    } else if(k == 0) {
        return q;
    } else if(j * i < 0) {
        return com(p, middle);
    } else {
        return com(middle, q);
    }    
}
int f(double m)
{
    double left;
    
    if(fabs(m-x) < 1e-6) {
        return 1;
    }    
    left = c / sqrt(x*x-m*m) + c / sqrt(y*y-m*m) - 1;
    if(fabs(left) < 1e-6) {
        return 0;
    } else if(left > 1e-6) {
        return 1;
    } else {
        return -1;
    }    
}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -