题目地址:pdf版本
首先有一个平面几何结论,那就是在如下图中
始终有1/a+1/b=1/c ; 用相似三角形的知识很容易证明。
然后设?=t 。 那么a=sqrt(x*x-t*t), b=sqrt(y*y-t*t);
方程列出来了。
我们不需要直接解方程,把左边看做是t的函数,它单增的,我们可以二分答案。
代码:
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
using namespace std;
int main()
{
double x,y,c;
while(cin>>x>>y>>c)
{
double l=0,r=min(x,y);
double mid=l+(r-l)/2;
while(r-l>1e-5)
{
mid=l+(r-l)/2;
if(1/sqrt(x*x-mid*mid)+1/sqrt(y*y-mid*mid)>1/c) r=mid;
else l=mid;
}
printf("%.3lf\n",mid);
}
}
本文探讨了一种通过平面几何原理解决特定数学问题的方法,并介绍了如何运用二分搜索技巧来求解此类问题。具体而言,文章解释了在给定条件下,如何利用相似三角形的性质,通过代数表达式来描述变量间的关系,进而采用二分搜索法找到问题的解。通过实例演示,读者可以理解如何将抽象的几何概念转化为实际的计算步骤,实现高效问题求解。
442

被折叠的 条评论
为什么被折叠?



