这是16年国赛的一道题,以前做过一次,现在又重新做一下,做完这题感觉到。。。单纯靠脑子来跑程序真心不可靠,还是copy下再run下观察结果来得实际点
首先看下check函数
在WeAretheChangPingPeople这个函数里面,在5555端口监听信息,然后与hhxptgdlffojwztpewc比较
接下来看下NowYouSeeMe这个函数
开头的一大段连接5555端口之类的就不看了,我们来看下主要的部分
首先将输入的字符转化为三位十进制数
比如aaa就变成
097097097
然后下面有两个循环,里面那个循环其实就是某种意义上实现一个大数除法
把代码复制下来,跑下看下,我用的是aaa
097097097
003734503
000143634
000005524
000000212
000000008
000000000
其实就是把一个大数除以26,然后把最后三位单独拿出来,余26再加上97,最后拼接起来和hhxptgdlffojwztpewc比较
下面是一个简单的代码,可以把大数给复原
b=0
a='hhxptgdlffojwztpewc'
for i in range(len(a)):
b*=26
b+=ord(a[len(a)-i-1])-97
print(b)
然后前面补个0,再每三位解析成一个字符就可以了