SGU 144 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=144

144. Meeting

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

Two of the three members of the winning team of one of the ACM regional contests are going to meet in order to train for the upcoming World Finals. They decided that they will meet sometime between X o'clock and Y o'clock. Because they never get anywhere on time (they were late even on the day of the regional contest), they did not set an exact time when they will meet. However, they decided that the one who gets first at the meeting point will not wait more than Z minutes for the other one (they calculated that, if the other one will not come within Z minutes from the arrival of the first of them, then it is very probable that he will not show up at all).
Knowing that, in the end, both of them will show up at some time between X o'clock and Y o'clock (not necessarily after an integer number of minutes), compute which is the probability that they will actually meet.

Input

The input will contain 2 integer numbers X and Y (0<=X<Y<=24) and one real number Z ( 0 < Z <= 60*(Y-X) ).

Output

You should output the required probability with 7 decimal digits (rounded according to the 8th decimal digit).

Sample Input

11 12 20.0

Sample Output

0.5555556

题目的大意是说两个人相约在X点到Y点之间见面,先到的等后到Z分钟,问两人碰面的概率是多少.

学过概率论的人做这道题应该是很简单的,算起来就是个赤裸裸的几何概型题目,推出公式后代码就没几行了.数学过程如下:

以甲到达的时间 a 作为横坐标,乙到达的时间 b 作为竖坐标,依题意,范围均是X~Y.那两人能碰面的话 |a - b| < = Z.所求的概率就是图中红线和蓝线中间的部分所占的比例.



CODE

#include<stdio.h>
#include<math.h>
 
int main()
{
  int x,y;
  double z,ans;
  scanf("%d%d%lf",&x,&y,&z);
  x*=60;y*=60;
  ans=pow((abs(x-y)-z),2)/pow(abs(x-y),2);
  printf("%.7lfn",1-ans);
  return 0;
}
» 本博客采用署名 2.5 中国大陆许可协议进行许可,本文版权归作者所有,欢迎转载,但必须在明显位置给出原文连接。
anyShare分享到:

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>