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 }
代码君

 

你可能感兴趣的:(head)