UVa 1636 (概率) Headshot

既然是第一道概率题,就正儿八经地分析一下吧。

题意:

有一个左轮枪,里面随机装了或者没装子弹,用一个01序列表示。现在已知扣动第一次扳机没有子弹,问是继续扣动扳机还是随机转动一下再扣,那种选择使得第二次扣扳机没有子弹的概率大。

分析:

这是一个条件概率,已知第一次扣动扳机没有子弹。

设序列长度为n,00序列的个数为a,0的个数为b

那么第二次扣的时候如果也没有子弹,就对应所给序列的连续两个0,样本空间为b,所以概率为a/b

如果随机转动一次的话,第一次扣和第二次就完全是独立的了,所以概率为b/n

 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 const int maxn = 100 + 10;
 5 char s[maxn];
 6 
 7 int main()
 8 {
 9     //freopen("in.txt", "r", stdin);
10 
11     while(scanf("%s", s) == 1)
12     {
13         int l = strlen(s);
14         s[l] = s[0];
15         int zero = 0, doublezero = 0;
16         for(int i = 0; i < l; ++i)
17         {
18             if(s[i] == '0')
19                 zero++;
20             if(s[i] == '0' && s[i+1] == '0')
21                 doublezero++;
22         }
23         int d = doublezero * l - zero * zero;
24         if(d > 0)
25             puts("SHOOT");
26         else if(d < 0)
27             puts("ROTATE");
28         else
29             puts("EQUAL");
30     }
31 
32     return 0;
33 }
代码君
原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4175745.html