既然是第一道概率题,就正儿八经地分析一下吧。
题意:
有一个左轮枪,里面随机装了或者没装子弹,用一个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 }