#H1039. 加密通信
加密通信
题目描述
在一次军事演习中,小凯担任通信兵,负责解密传来的信息。他会收到一份 的数字表(仅包含 共 种数码),和一份 的字母表(仅包含 共 种字符)。 数字表被称为解密卡,字母表被称为加密卡。规定如下名词:
- 覆盖区域:将数字表和字母表对齐,使得数字表在上,字母表在下,数字与字母一一对应,如果数字表的 行 列对应字母表的 行 列,那么数字表的 行 列对应字母 表的 行 列,此时覆盖区域为字母表以 行 列为左上角、 行 列为右下角的正方形范围。简单来说,根据图片显示,若数字表的左上角盖在了 行 列的位置,则数字表会覆盖 到 这片区域。
- 有效区域:称某字母和其在字母表的顺序数字为互相对应,字母 和 是第 个字母、字母 和 是第 个字母,那么 和 对应, 和 对应,以此类推。如果覆盖区域的 四个顶点字母恰好和原始数字表的四个顶点数字互相对应,那么这个覆盖区域称之为有效区域。
- 数字关联: 和任何字母关联,不能和任何字母关联, 中的质数和大写字母关联, 中的合数和小写字母关联。若关联成功,则提取出来作为密码的一部分,如上图中 是质数,需关联大写字母, 对应的是 ,关联成功; 是质数,需关联大写字母, 对应的 关联失败; 是合数,需关联小写字母,而 对应的是 ,关联失败。因此上述图中,本次覆盖只关联成功一次,提取出一个密码 。
- 解密数字表:大小为 ,可以由原始数字表顺时针旋转若干次 得到
- 区域解密:有效区域和解密数字表对齐,从左到右从上到下,将和解密数字表中对应位置数字恰好关联的字母提取出来,构成字符串。
一次解密操作包含以下步骤:
- 首先从左到右从上到下找出所有有效区域,依次进行解密。
- 对于每个有效区域首先用原始数字表进行 次区域解密,然后根据当前有效区域的 顶点大写字母数量 ,额外进行 次区域解密(如图示中四个顶点有两个大写字母,因此需旋转两次),第 次解密时将原始数字表顺时针旋转 后作为解密数字表再进行区域解密。
- 最后将所有区域解密的字符串按序连接,构成最终的解密字符串。
你需要帮助小凯完成解密工作。
输入描述
输入共 行,
第 行两个正整数 和 ,分别代表数字表和字母表的大小;
第 至 行分别有连续的 个数码字符,代表数字表的内容;
第 至 行分别有连续的 个字母字符,代表字母表的内容。
输出描述
输出仅一行一个字符串,代表解密后的答案。如果答案为空串,你需要输出“No solution”(不包含引号)。
输入样例1
2 3
11
13
AAB
ACB
BzB
输出样例1
CAAAC
输入样例2
3 4
101
245
313
DABa
AFab
Fcdc
cdcD
输出样例2
BFaABabFFcAFcd
样例解释
对 输入样例 , 仅有 这一个有效区域,此区域的四个顶点共有 个大写字母需要 额外 进行 次区域解密,此区域第 次解密为 (仅在 位置有质数 与大写字母 关联),第 次为 ,第 次为 ,最终答案为
对 输入样例 ,有 以及 这两个有效区域,第一个 区域为
此区域的四个顶点共有 个大写字母需要 额外 进行 次区域解密。此区域的第一次解密得到的密码为 ,旋转一次密码卡,进行第二次解密,得到的密码为 ;第二个区域为
此区域的四个顶点共有 个大写字母需要额外进行 次区域解密。此区域的第一次解密得到的密码为 ,旋转一次密码卡,进行第二次解密,得到的密码为 ;因此总密码为四块密码从前往后拼在一起:。
数据范围
测试点编号 | 特殊性质 | |
---|---|---|
无 | ||
无 | ||
特殊性质一栏种,两个字母的含义为:
- : 数字表中仅含有 和 。
- : 字母表中仅含有小写字母。
对于所有测试点:。