CSU 1159: 中南才女

来源:互联网 发布:如何做销售数据分析表 编辑:程序博客网 时间:2024/05/15 16:49

题目:

Description

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

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

Input

 多组数据,每组数据包括两个实数,Lt,一组数据占一行

1<=L<=10

0<=t<=10

Output

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

Sample Input

2.0 0.02.0 3.0

Sample Output

0.0000001.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;}

1 0