这是第一章的第一部分的第一道题目,所以相对来说,是最简单的题目,或者用网站的话叫"Ad hoc problem"。
大体意思就是地球上有很多飞碟(UFOs)迷的组织。当飞碟发出的信号,和该组织的名字经过某种运算之后,是相等的,那么该组织就会被飞碟带去外星(GO),否则就不带(STAY)。这种运算即:名称里的字母按照A=1, B=2...Z=26转换之后,每个字母对应的数字再连乘,乘积模47,就得到结果。比如
飞碟信号
COMETQ,对应数字为3, 15,13,5,20,17,他们的连乘为31513520*17=994500, 取模47(即除以47的余数):994500 mod 47=27, 结果为27
某个组织的名字
HVNGAT,对应数字为8,22,14,7,1,20,他们的连乘为8221471*20=344960 mod 47=27,结果为27
这样这个组织的名字经过运算的结果和飞碟信号经过计算的结果是一样的,所以就输出"GO"到文件ride.out里即可。
测试时,输入文件为ride.in,内含两行,第一行为飞碟信号,第二行为组织的名字。这两组字母的长度不定,也不一定相同。
输出为"GO"(相等)或者"STAY"(不等)。
我的python程序:
fin = open ('ride.in', 'r')
fout = open ('ride.out', 'w')
comet = fin.readline()
group = fin.readline()
x=1
y=1
for i in range(0,len(comet)):
x = x * (ord(comet[i])-64)
for i in range(0,len(group)):
y = y * (ord(group[i])-64)
if ((x%47)==(y%47)):
fout.write ("GO" + '\n')
else:
fout.write ("STAY" + '\n')
fout.close()