C++ 越狱事件

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:52:40
内容:

大家早已经听说了吧,呼和浩特市第二人民监狱在2009年10月17日四名囚犯杀害狱警后逃出了监狱。害怕吗,那可是些亡命徒呀?不过还好都已经捉拿归案了,大家可以放心了。

这一事件惊动了党中央,上级批示,不惜重金要将监狱重新改造,以防在有越狱事件发生。要将囚犯放在圆形有水的湖中,让囚犯只能在水中,岸边站着狱警沿湖边巡逻,当有囚犯逃跑时,狱警就会及时出击。可是狱警是否能看管住囚犯呢?这些囚犯的智商可都够高了,听说你是一个程序高手,现在请你帮忙。

为了简单,一个囚犯配备一个狱警,已知这个囚犯他开始的状态正好站在湖中心(圆心),狱警沿岸边巡逻,但狱警不能下到水里,他们的体能都是无限的,他们在任何时间都能看见对方。囚犯从湖中心开始向岸边跑,当囚犯上了岸边,那么狱警就无法在将他抓获。PI取3.1415926就可够用,你不必多虑数太小而造成的错误。

输入说明:

第一行有一个n,代表有n个测试用例,第二行有三个数,分别由r,t,m组成,r代表湖的半径,t代表囚犯在水里的单位时间速度,m代表狱警的单位时间速度。
输出说明:

如果狱警能够看管住囚犯,就输出YES,否则输出NO。

范例输入:

2
5.0 2.0 3.0
10.3 1.6 9.8

范例输出:

NO
YES
高手给个样例程序或者核心算法

这个是纯数学的啊,很简单的,囚犯离狱警最远时候向相反的方向游最有可能逃脱,所以当 r/t<π*r/m时候,狱警就抓不到囚犯了
#include <iostream.h>
void main()
{
int n;
const int PI=3.1415926;
double r,t,m;
cin>>n;
for (int i=0;i<n;i++)
{
cin>>r>>t>>m;
if (r/t<PI*r/m)
{
cout<<"NO"<<endl;
}
else
cout<<"Yes"<<endl;
}
}