AT_oupc2023_day1_c.Caesar Cipher

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

通常,恺撒密码采用 33 个字母的位移,但在这里,我们允许使用任意密钥 kk,其中 0≤k<260 \leq k < 26,将每个字母向后移动 kk 位。加密文本由小写英文字母组成,位移时仅在小写字母范围内循环。

有关恺撒密码的详细说明:未加密的文本称为明文,加密后的文本称为密文。将密文还原成明文的过程称为解密。

给定密钥 kk(0≤k<260 \leq k < 26)时,加密操作是将每个字符替换为其后第 kk 个字符。注意,z 后面的字符为 a。

例如,密钥为 22 时,明文 ayz 加密后变为 cab。

现在有 NN 个明文候选,每个候选记为 SiS_i,且长度均为 MM。

接下来给出 QQ 个密文,请你将它们解密。第 jj 个密文为 TjT_j,它是把某个明文候选用恺撒密码加密所得的密文,每个密文独立地使用某个密钥加密。

保证每个明文候选在加密后能唯一确定,也就是说,不存在 SaS_a 和 SbS_b(a≠ba \ne b)在经过某种密钥 ka,kbk_a, k_b 加密后产生完全相同的密文的情况。

输入格式

输入通过标准输入给出,格式如下:

NN MM
S1S_1
S2S_2
⋮\vdots
SNS_N
QQ
T1T_1
T2T_2
⋮\vdots
TQT_Q

输出格式

请输出 QQ 行。

第 jj 行输出将第 jj 个密文 TjT_j 解密得到的明文。

输入输出样例

  • 输入#1

    2 3
    ayz
    bbb
    2
    cab
    aaa

    输出#1

    ayz
    bbb
  • 输入#2

    3 7
    rainbou
    osakauv
    atcoder
    2
    ptblbvw
    envaobh

    输出#2

    osakauv
    rainbou

说明/提示

样例说明 1

用密钥 22 加密 ayz 得到 cab。
用密钥 2525 加密 bbb 得到 aaa。

数据范围

  • 1≤N≤200,0001 \leq N \leq 200,000
  • 1≤M≤200,0001 \leq M \leq 200,000
  • 1≤Q≤200,0001 \leq Q \leq 200,000
  • Mmax⁡(N,Q)≤200,000M \max (N, Q) \leq 200,000
  • N,M,QN, M, Q 为整数
  • Si,TjS_i, T_j 为仅包含小写英文字母且长度为 MM 的字符串
  • 明文候选在加密后能被唯一确定
  • TjT_j 是明文候选之一经恺撒密码加密后所得

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页