• cf 108b basketball team 组合数学


    题意:

    某大学有m个学院,每一个学院有si个人,现在要组建一支有n个人的篮球队,已经知道男主角在第h个学院,还有他先被球队录取了,现在学院在剩下的所有人中等概率的挑选出n-1个人

    问:男主角想知道球队里面还有人和他来自同一个学院的概率,若不够人数,则输出-1

    这道题很简单的组合数学题,但是要注意,计算的中间过程溢出。

     1 #include<cstdio>
     2 
     3 const int maxn=1010;
     4 #define LL long long
     5 
     6 int s[maxn];
     7 
     8 int main()
     9 {
    10     int n,m,h;
    11     scanf("%d%d%d",&n,&m,&h);
    12     int sum=0;
    13     for(int i=1;i<=m;i++)
    14     {
    15         scanf("%d",&s[i]);
    16         sum+=s[i];
    17     }
    18     if(sum<n)
    19     {
    20         printf("-1
    ");
    21     }
    22     else if(s[h]==1)
    23     {
    24         printf("0
    ");
    25     }
    26     else if(sum-s[h]<n-1)
    27     {
    28         printf("1
    ");
    29     }
    30     else
    31     {
    32         s[h]--;
    33         sum--;
    34         double cnta=1;
    35         for(LL i=sum-s[h]-n+2;i<=sum-n+1;i++)
    36         {
    37             cnta*=i;
    38         }
    39         for(LL i=sum-s[h]+1;i<=sum;i++)
    40         {
    41             cnta=cnta/i;
    42         }
    43         printf("%.6f
    ",1.0-(double)cnta);
    44     }
    45 
    46     return 0;
    47 }
    View Code
  • 相关阅读:
    XML转义符简易版
    MarkDown语法
    判断javaScript变量是Ojbect类型还是Array类型
    Springboot实现VNC的反向代理
    MySql事务隔离的特点与实现
    MySql索引入门
    windows、Linux 批量执行 redis脚本命令
    iis 灰度发布
    iis 负载
    docker中部署.netcore2.2项目
  • 原文地址:https://www.cnblogs.com/-maybe/p/4684613.html
Copyright © 2020-2023  润新知