#M250635. 密码学
密码学
题目描述
小Z最近在学习密码学,他设计了一种加密方法保护自己的日记。该加密方法包含两个步骤:
- 字母替换:将每个字母替换为替换表中的另一个字母(由 个字符的替换表决定);
- 循环位移:对替换后的字母进行 次循环位移,例如循环位移一次,使 。
小Z需要实现一个程序,能够根据输入的替换表和操作指令,对字符串进行加密或解密。请你帮助他完成这个程序。
输入格式
第一行: 个连续小写字母,表示字母替换表,第一个表示 被替换成的字符,第二个表示 被替换成的字符,以此类推。
第二行:整数 ,表示操作次数。
接下来 行,每行格式为:
- 一个字符串 (仅包含小写字母);
- 一个整数 , 表示加密, 表示解密;
- 一个整数 表示位移次数;
输出格式
输出 行,每行一个字符串,表示加密或解密后的结果。
输入输出样例
defghijklmnopqrstuvwxyzabc
1
hello 1 1
lipps
样例 说明
- 替换表
defghijklmnopqrstuvwxyzabc表示:$a \rightarrow d, b \rightarrow e, \dots, z \rightarrow c$ - 加密操作:
hello- 字母替换:$h \rightarrow k, e \rightarrow h, l \rightarrow o, o \rightarrow r$ →
khoor - 循环右移 位:$k \rightarrow l, h \rightarrow i, o \rightarrow p, r \rightarrow s$ →
lipps
- 字母替换:$h \rightarrow k, e \rightarrow h, l \rightarrow o, o \rightarrow r$ →
defghijklmnopqrstuvwxyzabc
1
lipps 2 1
hello
样例 说明
- 使用相同替换表
- 解密操作:
lipps- 循环左移 位:$l \rightarrow k, i \rightarrow h, p \rightarrow o, s \rightarrow r$ →
khoor - 反向替换:$k \rightarrow h, h \rightarrow e, o \rightarrow l, r \rightarrow o$ →
hello
- 循环左移 位:$l \rightarrow k, i \rightarrow h, p \rightarrow o, s \rightarrow r$ →
qwertyuiopasdfghjklzxcvbnm
2
mini 1 3
stack 2 3
grir
jautp
数据范围
-
替换表保证 到 均出现一次
测试点编号 特殊性质 , 的长度 无 无
相关
在下列比赛中: