zoukankan      html  css  js  c++  java
  • LightOJ 1104

    题意:

      给你一年有n天,求至少有m人使得至少有两个人在同一天生日的概率不少于0.5.

    分析:

      任意两个人不在同一天生日的概率为C(n,m)*m!/n^m,它的对立事件A为至少有两个人在同一天生日,

    则P(A) = 1 - C(n,m)*m!/n^m = 1 - P(n,m)/n^m(后一个P表示排列); 根据题意有P(A) >= 0.5 即 P(n, m)/n^m <= 0.5.

    该式的展开式为 p = n/n*(n-1)/n*(n-2)/n*...*(n-m+1)/n,因此只要判断该式的累乘结果小于等于0.5时,输出此时的m即可.

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <fstream>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <cstdlib>
     8 #include <algorithm>
     9 #include <set>
    10 #include <map>
    11 #include <list>
    12 #include <stack>
    13 #include <queue>
    14 #include <iterator>
    15 #include <vector>
    16 
    17 using namespace std;
    18 
    19 #define LL long long
    20 #define INF 0x3f3f3f3f
    21 #define MOD 1000000007
    22 #define MAXN 10000010
    23 #define MAXM 1000010
    24 
    25 
    26 int main()
    27 {
    28     int kase = 0;
    29     int t;
    30     scanf("%d", &t);
    31     while(t--)
    32     {
    33         int n;
    34         scanf("%d", &n);
    35         double p = 1.0;
    36         int cnt = 0;
    37         while(p > 0.5)
    38         {
    39             p *= 1.0*(n-cnt)/n;
    40             cnt++;
    41         }
    42         printf("Case %d: %d
    ", ++kase, cnt-1);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    hive order、sort、distribute、cluster by区别与联系
    hive over窗口函数的使用
    hive中row_number() rank() dense_rank()的用法
    hive中文乱码问题
    hive分桶表的学习
    hive的调优经验
    Hive的学习
    hive grouping sets和GROUPING__ID的用法
    hive修复分区或修复表 以及msck命令的使用
    Vue中使用websocket
  • 原文地址:https://www.cnblogs.com/xl1164191281/p/5734187.html
Copyright © 2011-2022 走看看