题目链接:https://vjudge.net/contest/157397#problem/A
题意:
轮子手枪,给出子弹的序列,0是没有子弹,1是有子弹,对手开了一枪没死,我可以继续开一枪,或者重转,我当然不想死,两种情况下如果不死的概率相等,输出EQUAL,求怎么决策?
条件概率:
(注意,刘汝佳大神这里写的有点问题,除号写成了 | )
意思是: 在条件 B 发生的情况下 A 发生的概率 = AB同时发生的概率 / B发生的概率。
在AB时独立事件时 P(AB) = P(A)*P(B);
题目中:
直接上一枪没死,就是条件概率。 等于 00/0
重转 0/len;
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main() 6 { 7 char str[205]; 8 while(~scanf("%s",str)) { 9 int len = strlen(str); 10 int cnt0 = 0; 11 int cnt00 = 0; 12 for(int i=0;i<len;i++) 13 { 14 if(str[i]=='0') 15 cnt0++; 16 if(str[i]=='0'&&str[(i+1)%len]=='0') 17 cnt00++; 18 } 19 20 double sh = cnt00*1.0/cnt0; 21 double ro = cnt0*1.0/len; 22 23 if(sh>ro) 24 puts("SHOOT"); 25 else if(sh<ro) 26 puts("ROTATE"); 27 else puts("EQUAL"); 28 29 } 30 return 0; 31 }