zoukankan      html  css  js  c++  java
  • SGU[144] Meeting

    Description

    描述

    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). 

    某个ACM区域赛胜出队伍中的两名成员准备碰头进行训练,为接下来的World Final做准备。他们决定在X点钟和Y点钟之间碰头。因为他们从来不会准时的出现在任何地点(他们甚至在区域赛当天也迟到了),他们决定不设置一个精确的相遇时间,同时决定谁先到达碰头地点将不会等待另外一个人超过Z分钟(他们认为,如果对方不会在Z分钟之内出现,那么对方将不会再出现)。

    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.

    同时,我们知道他们一定会在在X点和Y点之间出现(不一定是某个整数分钟的时间点),计算他们相遇的概率。

     

    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) ).

    输入包含2个整数X和Y(0 <= X < Y <= 24)以及一个实数Z(0 < Z <= 60 * (X - Y))。


    Output

    输出

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

    你去要输出他们相遇的概率,保留7位小数(第8位小数四舍五入)。


    Sample Input

    样例输入

    11 12 20.0


    Sample Output

    样例输出

    0.5555556

     

    Analysis

    分析

    这是一道纯粹的数学概率题,我们可以进行公式推导。

    首先我们需要统一单位,将X和Y均以分钟为单位;其次,我们以X点钟为计时零点;接下来做出这样一张图:

    根据上图,我们可以知道相遇的概率为中间六边形的面积,即P = SA / S,由于SA求解起来比较困难,我们可以转换为计算总面积减去两个三角形的面积。因此,答案为P = 1 - (Y - X - Z) ^ 2 / (Y - X)^2。

     

    Solution

    解决方案

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    {
    	ios::sync_with_stdio(false);
    	double X, Y, Z;
    	while(cin >> X >> Y >> Z)
    	{
    		X *= 60; Y *= 60; Y -= X;
    		cout << fixed << setprecision(7) << 1 - (Y - Z) * (Y - Z) / (Y * Y) << endl;
    	}
    	return 0;
    }
    

    这道题目主要考察数学中的概率知识。

  • 相关阅读:
    .NET设计模式系列文章《转》
    sharpwebmail邮件管理系统开源 下载及使用方法
    POJ 1949 DP?
    POJ 1948 DP
    POJ 1945 暴搜+打表 (Or 暴搜+判重)
    POJ 1944 并查集(模拟)
    POJ 3259 Wormholes SPFA判负环
    POJ 3268 Dijkstra+priority_queue或SPFA
    POJ 3299 模拟
    POJ 3342 树形DP+Hash
  • 原文地址:https://www.cnblogs.com/Ivy-End/p/4668595.html
Copyright © 2011-2022 走看看