字母移位 题目描述 字母移位:表示将字母按照字母表的顺序进行移动。 例如:'b'向右移动一位是'c','f'向左移动两位是'd'。 特别地,'a'向左移动一位是'z','z'向右移动一位是'a'。 给定一个仅包含小写字母且长度为 n 的字符串 s,以及 n 个正整数 a1,a2, a3.…an,接下来对字符串s按如下规律操作: 将第 1位字符向左移动 a1位; 再将第 1、2 位字符都向右移动 a2位; 再将第 1、2、3 位字符都向左移动 a3位; 再将第 1、2、3、4 位字符都向右移动 an位; 以此类推,直到将s的第1到第n位字符都(按规律向左或向右)移动ai位。 最后,将操作完成后的字符串s输出。 例如:n=5,字符串s="abcde",5个正整数为1,3,5,7,9; 将"abcde"的第 1 位字符"a"向左移动 1位,s变为"zbcde" 再将"zbcde"的前 2 位字符"zb"向右移动 3 位,s变为"cecde" 再将"cecde”的前 3位字符"cec"向左移动5 位,s 变为"xzxde" 再将"xzxde"的前 4 位字符"xzxd"向右移动7 位,s变为"egeke" 再将"egeke"的前 5 位字符"egeke"向左移动 9 位,s 变为"vxvbv"。 最后,将操作完成后的字符串"vxvbv"输出。 输入格式 第一行输入一个整数n(1<=n<=105) 第二行输入一个仅包含小写字母且长度为 n的字符串s 第三行输入 n个整数 a1、a2...an(1<=a<=109),整数之间以一个空格隔开 输出格式: 输出一个字符串,表示操作完成后的字符串S 样例输入 5 abcde 1 3 5 7 9 样例输出 vxvbv
正确答案:参考程序(Python):字母移位。维护每个位置累计偏移。读s和a数组。offset[i]按顺序累加:第i步对前i位加(左为-,右为+)a[i]。用差分前缀求每位净偏移,字符循环移动。样例abcde+1,3,5,7,9→vxvbv。核心:差分累计偏移循环移位。
试卷来源:202408(第15届)蓝桥杯C++编程青少组(省赛_中级)真题