QOJ.ac

QOJ

Limite de temps : 10.0 s Limite de mémoire : 256 MB Points totaux : 100

#15987. 栅格

Statistiques

在 16 世纪,还没有我们今天这样的计算机。另一方面,即使在那个时代,保护信息不被无关人员读取也是非常必要的。一些古老的方法,比如剃光奴隶的头发,把信息写在他的头上,等到他的头发重新长出来,然后让他穿过充满敌人的区域,这些方法虽然可能有效,但需要花费很长时间。这就是为什么必须发明新方法的原因。例如,意大利数学家吉罗拉莫·卡尔达诺(Girolamo Cardano)是第一个描述栅格密码(Grille cipher)的人。

为了进行加密和解密,你需要一个工具(基本上就是密钥),称为“栅格”(grille)。通信双方(爱丽丝和鲍勃)必须拥有相同的栅格。栅格看起来像一个由 $N \times N$ 个单位正方形组成的网格,其中一些正方形是实心的,另一些则被挖空以形成“孔洞”。

假设我们有一个含有 $m$ 个孔洞的栅格。在加密时,我们将消息的前 $m$ 个字母写入孔洞中(从第一行开始,从左到右,然后继续写后面的行)。然后,我们将栅格顺时针旋转 90 度,并将另外 $m$ 个字母写入孔洞中(同样是从左到右,从上到下)。之后,我们再将栅格旋转 90 度,并写入另外 $m$ 个字母。最后,我们第四次重复相同的操作。在最后,我们用随机字母填充剩余的位置(如果有的话),以使密文更加安全。请注意,旋转的是栅格,而不是消息!

在解密时,我们基本上使用相同的算法,只是读取字母而不是写入它们。

输入格式

输入包含多组测试数据。每组测试数据包含一个栅格的描述和一个密文。你的任务是解密该消息并将明文输出。

每组测试数据以一行开始,包含一个整数 $N$($1 \le N \le 1000$),表示栅格的大小。接下来的 $N$ 行包含栅格的描述。这些行中的每一行都恰好包含 $N$ 个字符,字符要么是井号 #(表示实心/不透明材料),要么是大写字母 O(表示孔洞)。

注意:在实际应用中,栅格的孔洞会经过精心设计,使得密文的任何位置都不会被使用超过一次。但在本题中,这并不能保证。某些栅格可能包含在旋转后指向密文相同位置/字母的孔洞。然而,解密算法仍然是相同的。

在栅格描述之后,还有另外 $N$ 行包含加密后的消息。其中的每一行都恰好包含 $N$ 个字符——均为大写英文字母。

最后一组测试数据后面紧跟一行,包含一个零。

输出格式

对于每组测试数据,在一行中输出解密后的消息(明文),不包含空格。

样例

输入样例 1

4
##O#
#O#O
####
###O
ARAO
PCEM
LEEN
TURC
3
O#O
###
O#O
ABC
DEF
GHI
0

输出样例 1

ACMCENTRALEUROPE
ACGIACGIACGIACGI

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.