Problem 1089 --栅栏密码

1089: 栅栏密码

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 161  Solved: 77
[Submit][Status][Web Board][Creator:]

Description

有一天,gungun 看着《亲爱的,热爱的》中大(shuai)佬(ge)们的英姿,突然说了一句:“教练,我想打CTF~”

zyyyyy 顿时两眼放光,准备马上带 gungun 开始学习 CTF 知识!考虑到很多部分都需要额外的基础,zyyyyy 决定先带她从有趣但又简单的古典密码开始学起。

如果您已了解栅栏密码,可以跳过下面一个段落以节省时间。

栅栏密码是古典密码中很重要的一种,它的加密原理如下:

① 把要传递的信息中的字母按列优先的方法排成上下 r 行,也就是先排完第1列再排第2列,以此类推。

② 每次把下一行字母接在上一行的后边,也就是把第2行接在第1行的后面,再接第3行,以此类推。

它的解密原理是类似的。

这里给出一个两行的实例:

明文:THE LONGEST DAY MUST HAVE AN END

加密:

① 把将要传递的信息中的字母交替排成上下两行。

T E O G S D Y U T A E N N

H L N E T A M S H V A E D

② 将下面一行字母排在上面一行的后边,得到密文。

密文:TEOGSDYUTAENNHLNETAMSHVAED

解密:

① 先将密文写作两行。

T E O G S D Y U T A E N N

H L N E T A M S H V A E D

② 再按上下上下的顺序组合成一句话,得到明文。

明文:THE LONGEST DAY MUST HAVE AN END

学完了原理,现在 zyyyyy 想让 gungun 写一个解密的小程序,但是 gungun 已经不想再学了,只想接着看剧,只好请你帮帮忙写一份代码解密栅栏密码。

作为一个简化版本,本题中会把行数和列数给出,并且完全不需要考虑空白和语义。

【CTF,一般译作夺旗赛,是网络安全技术人员之间进行技术竞技的一种比赛形式】

Input

第一行2个整数 r c ,分别表示栅栏的行数和列数。

第二行1个字符串 s ,表示加密之后的消息(密文)。  

1 <= r,c <= 16 。

s 的长度不超过256,且仅包含大写英文字母(A-Z)。 

数据保证 s 的长度一定等于 r*c 。

Output

一行1个字符串,表示加密之前的消息(明文),长度应当与 s 的长度相同。

Sample Input

4 4
CEHATHANFEODYNWE

Sample Output

CTFYEHENHAOWANDE

HINT

首先将密文 CEHATHANFEODYNWE,按照行优先的方法书写,得到如下的矩阵:
C E H A
T H A N
F E O D
Y N W E
然后再按照列优先的方法读取,可以得到明文 CTFYEHENHAOWANDE 。

Source

[Submit][Status]