zoukankan      html  css  js  c++  java
  • 相同生日概率(经典问题)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/F

    题意:

           多组案例。每组案例给出一年的天数(不一定是地球一年365天,火星上一年有669天),问开展的生日party上需要有多少人才能满足至少两人生日相同的几率达到至少0.5。

    案例:

           Sample Input

           2

           365

           669

           Sample Output

           Case 1: 22

           Case 2: 30

    分析:

           题目应从当前事件的对立事件入手,这样可以简化题目。也就是说现在要求至少需要多少人能满足任意两人的生日不同的概率低于0.5。怎样求取概率呢?举个例子:一年365天,假设有5个人,若要任意两人生日不同,则假定第一个人已经确定为某一天,那么第二个人有364种选法,第三个人有363种选法,第四个人有362种选法,第五个人有361种选法这样才可以保证要求。而原本每个人都有365种选法,这样任意两人生日不同概率为(364*363*362*361)/(365*365*365*365)。注意不要累计分子分母最后求积,这样会造成数据溢出。

    源代码:

     1 #include<cstdio>
     2 int n,ans,a[100005];
     3 void birth()
     4 {
     5         ans=2;
     6         double k=n-1;
     7         double p=1;
     8         while(1)
     9         {
    10              p*=double(k/n);
    11              if(p<=0.5) break;//对立事件概率
    12              k-=1;
    13              ++ans;
    14         }
    15 }
    16 int main()
    17 {
    18     int T,cnt=0;
    19     scanf("%d",&T);
    20     while(T--)
    21     {
    22         scanf("%d",&n);
    23         birth();
    24         printf("Case %d: %d
    ",++cnt,ans-1);
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    域名和dns
    Oracle版本区别及版本选择!
    并发
    URL和URI的区别??
    sshpass免密码(免交互)连接
    python之路 目录
    awk sed 总结
    aiohttp使用
    Mac破解软件 “XXX”意外退出 奔溃解决方法
    我的Mac中毒了,病毒居然叫做MacPerformance
  • 原文地址:https://www.cnblogs.com/huaszjh/p/4741677.html
Copyright © 2011-2022 走看看