zoukankan      html  css  js  c++  java
  • 2016湘潭邀请赛—Gambling

    http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1244

    题意:
    有a个红球,b个绿球,c个黄球,先拿完a个红球一等奖,先拿完b个绿球二等奖,c个黄球三等奖。求各个奖获奖的概率。

    思路:

    分析首先拿完红球,即拿一等奖的概率:

    我们假设拿完红球后继续拿,也就是拿完所有的球。

    接下来逆向思考,红球不可能是最后一个,最后一个只可能是黄球或绿球,我们可以把摸出来的球的顺序逆置,比如(红,黄,红,绿,绿,黄,绿)逆置之后就是(绿,黄,绿,绿,红,黄,红),你会发现,你第一个摸到的球的颜色一定会是黄、绿当中的一种,而摸到的第二种颜色的球一定是黄绿当中未摸到过的,这样的话就很好计算了。

    那么如果最后一个球是黄球,它的概率就是c/(a+b+c),除去黄球,最后一个是绿球的概率就是b/(a+b)。此时概率就是两者相乘。

    最后一个球是绿球的话也是这样分析。

    二等奖和三等奖也如上分析即可。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<vector>
     6 #include<queue>
     7 #include<cmath>
     8 #include<map>
     9 using namespace std;
    10 
    11 typedef long long LL;
    12 
    13 LL a,b,c;
    14 
    15 LL gcd(LL a,LL b)
    16 {
    17     return b==0?a:gcd(b,a%b);
    18 }
    19 
    20 void cacl(LL a, LL b, LL c,int flag)
    21 {
    22     LL z=b*c*(2*a+b+c);
    23     LL m=(a+b+c)*(a+b)*(a+c);
    24     LL g=gcd(m,z);
    25     printf("%I64d/%I64d",z/g,m/g);
    26     if(flag<=2)  printf(" ");
    27     else printf("
    ");
    28 }
    29 
    30 int main()
    31 {
    32     //freopen("D:\input.txt","r",stdin);
    33     while(~scanf("%lld%lld%lld",&a,&b,&c))
    34     {
    35         cacl(a,b,c,1);
    36         cacl(b,a,c,2);
    37         cacl(c,a,b,3);
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    01-移动端 REM 适配(postcss-pxtorem,lib-flexible的使用)
    19-webpack性能优化集锦
    10-map/WeakMap/WeakSet的使用场景
    03-web worker vue项目实战
    ELFhash
    哈希查找
    Logger之Logger.getLogger(CLass)使用(转载)
    mybatis中多对一查询
    IDEA中无法打开查看log文件解决方案
    Self-Supervised Scene De-occlusion(转载)
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6735370.html
Copyright © 2011-2022 走看看