本文主要是介绍Uva - 10566 - Crossed Ladders,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:两栋楼之间有两个梯子,如下图中的虚线所示,一个梯子的长度为x,另一个梯子的长度为y,两个梯子的交点离地面的高度为c,问两栋楼之间的距离。
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=20835#problem/G
——>>几何题,设宽度为w,交点距右楼距离为u,则
利用相似三角形推出关系:
解方程,这是一个减函数,二分答案即可。
(方程左边成一个函数,减函数,求根)
#include <iostream>
#include <cmath>
#include <iomanip>using namespace std;#define F(u) 1.0/sqrt(x*x-u*u) + 1.0/sqrt(y*y-u*u) - 1.0/cint main()
{double x, y, c;while(cin>>x>>y>>c){double R = (x < y) ? x : y, L = 0, M;for(int i = 0; i < 100; i++){M = L + (R-L) / 2;if(F(M) >= 0) R = M;else L = M;}cout<<setiosflags(ios::fixed)<<setprecision(3)<<L<<endl;}return 0;
}
这篇关于Uva - 10566 - Crossed Ladders的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!