E. 密码学

    传统题 1000ms 256MiB

密码学

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“赛后递交”以递交本题。

题目描述

小Z最近在学习密码学,他设计了一种加密方法保护自己的日记。该加密方法包含两个步骤:

  1. 字母替换:将每个字母替换为替换表中的另一个字母(由 2626 个字符的替换表决定);
  2. 循环位移:对替换后的字母进行 kk 次循环位移,例如循环位移一次,使 ab,bc,zaa\rightarrow b,b\rightarrow c,z\rightarrow a

小Z需要实现一个程序,能够根据输入的替换表和操作指令,对字符串进行加密或解密。请你帮助他完成这个程序。

输入格式

第一行:2626 个连续小写字母,表示字母替换表,第一个表示 aa 被替换成的字符,第二个表示 bb 被替换成的字符,以此类推。

第二行:整数 nn,表示操作次数。

接下来 nn 行,每行格式为:

  • 一个字符串 ss(仅包含小写字母);
  • 一个整数 opop11 表示加密,22 表示解密;
  • 一个整数 kk 表示位移次数;

输出格式

输出 nn 行,每行一个字符串,表示加密或解密后的结果。

输入输出样例

defghijklmnopqrstuvwxyzabc
1
hello 1 1
lipps

样例 #1\tt \#1说明

  • 替换表 defghijklmnopqrstuvwxyzabc 表示:$a \rightarrow d, b \rightarrow e, \dots, z \rightarrow c$
  • 加密操作:hello op=1,k=1op=1, k=1
    • 字母替换:$h \rightarrow k, e \rightarrow h, l \rightarrow o, o \rightarrow r$ → khoor
    • 循环右移 11 位:$k \rightarrow l, h \rightarrow i, o \rightarrow p, r \rightarrow s$ → lipps
defghijklmnopqrstuvwxyzabc
1
lipps 2 1
hello

样例 #2\tt \#2说明

  • 使用相同替换表
  • 解密操作:lipps op=2,k=1op=2, k=1
    • 循环左移 11 位:$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
qwertyuiopasdfghjklzxcvbnm
2
mini 1 3
stack 2 3
grir
jautp

数据范围

  • 替换表保证 aazz 均出现一次

    测试点编号 kk 特殊性质 nn , ss 的长度
    121∼2 100\leq 100 1000\leq 1000
    363∼6 109\leq 10^9 op=1op=1
    7107∼10 op=2op=2
    112011∼20

【AC-001-Div3】语法组月赛 || Round · 1

未参加
状态
已结束
规则
OI
题目
6
开始于
2025-6-14 0:00
结束于
2025-6-16 0:00
持续时间
3 小时
主持人
参赛人数
155