左轮手枪里装着子弹,开了第一枪是空枪,没有子弹,如果转一下左轮,然后再射击,问是射出子弹的概率大还是没有的大还是一样,分别输出”SHOOT “,”ROTATE”,”EQUAL”;
给出一个数字串表示子弹的有无,这是一道概率题,有个小问题,就是自弹弹堂是连续的,明白了这个就好做了;
首先这是一个条件概率,如果下一次射击是有子弹的,那么我们只需要找01的序列就可以了,同样,没有射出子弹的情况是00的序列;
这是一个条件概率
01 和 00 个数 等价于 0 的个数
射出的概率射不出概率 = 00的个数0的个数0的个数总个数n
化简后 射出的概率射不出概率 = 00的个数∗总个数n(0的个数)2
前者大就是SHOOT ,小就是ROTATE,一样就是EQUAL
想到这就很简单了
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char str[110];
int num_0, num_00, num_01;
while(~scanf("%s", str)) {
num_0 = num_00 = 0;
int len = strlen(str);
str[len] = str[0];//首尾相连
for(int i = 0; i < len; i++) {
if(str[i] == '0') {
num_0++;
if(str[i] == str[i+1]) {
num_00++;
}
}
}
if(num_00 * len > num_0 * num_0) puts("SHOOT");
else if(num_00 * len == num_0 * num_0) puts("EQUAL");
else puts("ROTATE");
}
return 0;
}