首页 > 代码库 > UVa 1636 (概率) Headshot
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 else29 puts("EQUAL");30 }31 32 return 0;33 }
UVa 1636 (概率) Headshot
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。