题意
你和人决斗。决斗规则如下:用一把有n个弹槽的左轮手枪,对着自己脑袋来一枪,孰生孰死看天意。现在对方已经装了若干发子弹,并随机转了一下转轮,子弹呢用一个01序列表示,0表示这个弹槽无子弹,1表示有子弹。对方先对着自个脑袋开了一枪,嗯,你只听到了一声’click’,人还好好的,是空枪。现在轮到你了,摆在你面前的有两个选择,一是直接对自己开射,二是转一下转轮再来开射,显然你会选择生还希望更大的那种。
现在要做的就是根据子弹装填的序列,进行判断,如果直接shot生还希望大输出”SHOOT”,如果转一下生还希望大输出”ROTATE”,两种选择生还希望相同输出“EQUAL”.
题解
已知第一枪是没子弹的,再直接开一枪没子弹的概率是在前者已发生的情况下,因此是一个条件概率。
这个概率等于
Cnt("00")Cnt("00")+Cnt("01")=Cnt("00")Cnt("0")
,
Cnt(str)
表示str在01序列中的出现次数。
而转一下再开枪没子弹的概率就是
Cnt("0")
除以序列长度。
设”00”的个数为a, “0”的个数为b,两个概率分别是
a/b
和
b/n
,转化一下比较
an
和
b2
。
#import sys
#sys.stdin = open(r"F:\python workspace\.idea\random.txt")
while True:
try:
s = input()
except:
break
n = len(s)
cnt00 = 0
cnt0 = s.count('0') #count the number of '0'
s = s[:] + s[0] #note that this is a cylinder
while s: #count the number of '00'
if s.find('00') != -1:
cnt00 += 1
s = s[s.index('00') + 1:]
else:
break
if cnt00 * n == cnt0 ** 2:
print("EQUAL")
elif cnt00 * n > cnt0 ** 2:
print("SHOOT")
else:
print("ROTATE")