#P1016. 小Pの密码

    ID: 26 传统题 1000ms 256MiB 尝试: 0 已通过: 0难度: 普及− ← 上一题 下一题 → 随机一题 上传者: 标签 模拟 字符串 枚举 双指针 哈希
显示设置

小Pの密码

题目描述

给你一个字符串 ss 和 aa 次加密操作,请你按给出的顺序依次对 ss 执行这些操作,并输出最终得到的字符串。

操作的编号与效果如下(其中 b,c,db, c, d 是输入给出的三个整数):

加密编号 加密效果
11 将字符串中的字符反转(倒序)。
22 将字符串中每个字符的 ASCII 码都 +b+b。
33 将字符串分成 cc 段,从第 11 段开始依次从各段取一个字符,拼成新的字符串。
44 将字符串中每个字符的 ASCII 码都 −d-d。

关于操作 33 的具体规则:设当前字符串长度为 LL,则先丢弃末尾 L mod cL \bmod c 个字符,把剩下的 L−(L mod c)L - (L \bmod c) 个字符等分成 cc 段;然后从第 11 段开始,每段依次取一个字符(即按下标 1,1+c,1+2c,…1, 1+c, 1+2c, \ldots 取值)拼成新字符串。若 c∣Lc \mid L,则不会丢弃任何字符。

输入格式

第一行一个字符串 ss。

第二行 a+1a+1 个整数,第一个数为 aa,随后 aa 个数依次为本轮操作的加密编号。

第三行三个整数,分别为 b,c,db, c, d。

输出格式

一行一个字符串,表示按顺序执行完所有操作后得到的结果。

输入输出样例 #1

输入 #1

abcd
4 1 2 3 4
2 2 2

输出 #1

dbca

说明

样例解释

共四次操作,过程如下:

  • 第 11 次(编号 11):反转字符串,abcd → dcba;
  • 第 22 次(编号 22):每个字符 ASCII 码 +2+2,dcba → fedc;
  • 第 33 次(编号 33):分成 22 段得到 fe 与 dc,轮流取字符得到 fdec;
  • 第 44 次(编号 44):每个字符 ASCII 码 −2-2,fdec → dbca。

因此输出 dbca。

数据范围

  • 对于 100%100\% 的数据,1≤∣s∣≤1061 \le |s| \le 10^6,1≤a≤91 \le a \le 9,1≤b,d≤251 \le b, d \le 25,1≤c≤∣s∣1 \le c \le |s|,且保证操作过程中每个字符的 ASCII 码始终落在可打印字符范围内(32∼12632 \sim 126)。