您的位置:首页 > 其它

CSU 1159: 中南才女

2016-07-27 11:25 190 查看
题目:


Description

话说中南有位才女,叫做珊,学校里面很多同学都很喜欢她,想追她做女朋友。hkx也不例外。可是不知道为什么,向她表白的同学都一一落马,一向自卑的hkx一直也不敢表白,hkx得知珊有一天晚上8点钟以后的某段时间会去学校的某个地方弹吉他,可是hkx晚上9点以后才有时间去,虽然晚了一点,但也有机会,所以hkx就去了。

假设珊晚上到达的时刻是等可能的分布在8点到8+L点,hkx到达的时刻是等可能的分布在9点到9+L点。珊到达之后会在那里弹吉他t小时,之后就会离开。hkx到达之后如果没见到珊的话,他就会等上t小时,如果这t小时内珊还不出现,他就会离开。那么hkx能够见到珊的概率是多少呢?


Input

 多组数据,每组数据包括两个实数,L和t,一组数据占一行

1<=L<=10

0<=t<=10


Output

 输出hkx能够见到珊的概率,四舍五入到小数点后6位


Sample Input

2.0 0.0
2.0 3.0


Sample Output

0.000000
1.000000


这个题目其实好简单,就是在 1<y<1+L,0<x<L 这个正方形中,求满足 |y-x|<t 的部分所占的比例。

无非就是把直线y=x的下面和上面的部分分开求。

下面的部分是

sum = (l - 1)*(l - 1) / 2;
if (t < l - 1)sum -= (l - 1 - t)*(l - 1 - t) / 2;


上面的部分是

if (t < 1)sum += t*t / 2 + t*(l - 1);
else if(t<l+1)sum += l - 0.5 + l*l / 2 - (l - t + 1)*(l - t + 1) / 2;
else sum += l - 0.5 + l*l / 2;


代码:

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
double t, l, sum;
while(cin >> l >> t)
{
sum = (l - 1)*(l - 1) / 2; if (t < l - 1)sum -= (l - 1 - t)*(l - 1 - t) / 2;
if (t < 1)sum += t*t / 2 + t*(l - 1); else if(t<l+1)sum += l - 0.5 + l*l / 2 - (l - t + 1)*(l - t + 1) / 2; else sum += l - 0.5 + l*l / 2;
cout << fixed << setprecision(6) << sum / l / l << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: