📄 2015.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 + -