题目链接
内网能进
题意:
一把手枪,里面是环形子弹,一共n个弹位,'0'表示弹位上没有子弹,'1'表示弹位上有子弹.你在打出一个空枪后,希望下一枪也是空枪,你有两种选择:
- 继续开下一枪,也就是下一个位置
- 转动弹位.开枪
分析:
继续开下一枪是一个条件概率,事件A表示"00"(开一枪为空下一枪也是空的),事件B表示"0?"(开一枪为空).而继续开一枪为空的概率为\(P(A)/P(B)\)
而转动弹位开枪概率为弹位中"0"的概率.
"00"个数为a,"0"的个数为b, 继续开枪为空的概率为a/b,转动弹位再开枪为空的概率b/n,
所以我们直接比较\(a*n\)和\(b*b\)的大小即可.
void solve()
{
ll len=strlen(str);
ll a=0,b=0;
str[len]=str[0];
for(int i=1;i<=len;i++){
if(str[i]=='0'&&str[i-1]=='0') a++;
if(str[i]=='0') b++;
}
if(a*len<b*b) puts("ROTATE");
else if(a*len==b*b) puts("EQUAL");
else puts("SHOOT");
}