Python刷题|Do the Untwist

清明节后,忽然有点小忙了,刷题大业被无奈耽搁。

昨天,自家的服务器卡成翔,一顿操作,空间和连接资源优化一波,重启服务,呃,没啥效果。。。。。

蓦然发现有俩破JOB居然跑了两三天!

无奈打开系统资源管理监控,IO个位数M/s,磁盘一直是100%最长活动时间 ,什么鬼?IO这么低,磁盘君挂了吗??

最终只能祭出终极杀招:磁盘碎片整理,JOB杀掉。

看到IO上去了,占用下来了。叹口气,开始刷题

1、题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1006

2、思路:加密,解密。按照加密规则推导下,然后基本就能知道反向操作的规则并推导出公式了。正向推导的作用是更好地理解规则,找出其中需要注意的点 ,比如,公式中 plaincode[k*i % n] - i 一定是小于28的,因为plaincode[]最大也就是plaincode['.'] = 27,但是plaincode[k*i % n] - i  会出现负数的情况,所以得到两种情况的公式:

if plaincode[k*i % n] - i >= 0 then plaincode[k*i % n] = ciphercode[i] + i

if plaincode[k*i % n] - i < 0 then plaincode[k*i % n] = ciphercode[i] + i - 28

合并一下,就是 :plaincode[k*i % n] = (ciphercode[i] + i)%28

剩下就是按照规则步骤反向操作了

ciphertext -> ciphercode -> plaincode -> plaintext

3、我的解答:

代码部分接受多行输入还未实现,有时间再调试,目前主要目标在算法

                                       
                                       

你可能感兴趣的:(Python刷题|Do the Untwist)