当前位置: 首页 > news >正文

【题解-洛谷】B4303 [蓝桥杯青少年组省赛 2024] 字母移位

题目:B4303 [蓝桥杯青少年组省赛 2024] 字母移位

B4303 [蓝桥杯青少年组省赛 2024] 字母移位

题目描述

字母移位表示将字母按照字母表的顺序进行移动。

例如, b \texttt{b} b 向右移动一位是 c \texttt{c} c f \texttt{f} f 向左移动两位是 d \texttt{d} d

特别地, a \texttt{a} a 向左移动一位是 z \texttt{z} z z \texttt{z} z 向右移动一位是 a \texttt{a} a

给定一个仅包含小写字母且长度为 n n n 的字符串 s s s,以及 n n n 个正整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an,接下来对字符串 s s s 按如下规律操作:

  1. 将第 1 1 1 位字符向左移动 a 1 a_1 a1 位;
  2. 再将第 1 1 1 2 2 2 位字符都向右移动 a 2 a_2 a2 位;
  3. 再将第 1 1 1 2 2 2 3 3 3 位字符都向左移动 a 3 a_3 a3 位;
  4. 再将第 1 1 1 2 2 2 3 3 3 4 4 4 位字符都向右移动 a 4 a_4 a4 位;

以此类推,直到将 s s s 的第 1 1 1 到第 n n n 位字符都(按规律向左或向右)移动 a n a_n an 位。

最后,将操作完成后的字符串 s s s 输出。

例如, n = 5 n=5 n=5,字符串 s = abcde s=\texttt{abcde} s=abcde 5 5 5 个正整数为 1 , 3 , 5 , 7 , 9 1, 3, 5, 7, 9 1,3,5,7,9

  1. abcde \texttt{abcde} abcde 的第 1 1 1 位字符 a \texttt{a} a 向左移动 1 1 1 位, s s s 变为 zbcde \texttt{zbcde} zbcde
  2. 再将 zbcde \texttt{zbcde} zbcde 的前 2 2 2 位字符 zb \texttt{zb} zb 向右移动 3 3 3 位, s s s 变为 cecde \texttt{cecde} cecde
  3. 再将 cecde \texttt{cecde} cecde 的前 3 3 3 位字符 cec \texttt{cec} cec 向左移动 5 5 5 位, s s s 变为 xzxde \texttt{xzxde} xzxde
  4. 再将 xzxde \texttt{xzxde} xzxde 的前 4 4 4 位字符 xzxd \texttt{xzxd} xzxd 向右移动 7 7 7 位, s s s 变为 egeke \texttt{egeke} egeke
  5. 再将 egeke \texttt{egeke} egeke 的前 5 5 5 位字符 egeke \texttt{egeke} egeke 向左移动 9 9 9 位, s s s 变为 vxvbv \texttt{vxvbv} vxvbv

最后,将操作完成后的字符串 vxvbv \texttt{vxvbv} vxvbv 输出。

输入格式

第一行,输入一个整数 n n n 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105)。

第二行,输入一个仅包含小写字母且长度为 n n n 的字符串 s s s

第三行,输入 n n n 个整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an 1 ≤ a ≤ 1 0 9 1 \leq a \leq 10^9 1a109),整数之间以一个空格隔开。

输出格式

输出一个字符串,表示操作完成后的字符串 s s s

输入输出样例 #1

输入 #1

5
abcde
1 3 5 7 9

输出 #1

vxvbv

代码(Unaccepted,20分)

#include<iostream>using namespace std;const int Maxn = 1e5 + 10;int n;
string s;
int a[Maxn];
string letter = "abcdefghijklmnopqrstuvwxyz";int findd(char y){for(int i = 0; i < letter.size(); i ++){if(letter[i] == y){return i;}}
}int main(){cin >> n;cin >> s;for(int i = 1; i <= n; i ++){cin >> a[i];}for(int i = 1; i <= n; i ++){int k = a[i]; // 移动的位数for(int j = 0; j < i; j ++){int indexY = findd(s[j]);int indexN = 0;if(i % 2 == 0){ // 偶数右移indexN = (indexY + k) % 26;}else{ // 奇数左移indexN = (indexY - k + 26) % 26;}s[j] = letter[indexN];}}for(int i = 0; i < s.size(); i ++){cout << s[i];}return 0;
}
http://www.xdnf.cn/news/287749.html

相关文章:

  • [HOT 100] 2538. 最大价值和与最小价值和的差值
  • LabVIEW伺服电机故障监测系统
  • 【QT】QT中的事件
  • JavaSE笔记--反射篇
  • Cron表达式的用法
  • cudaMalloc函数说明
  • 5.5刷题map和set的使用
  • 笔试专题(十五)
  • 3小时超快速入门Python
  • 字符串,数组,指针之间的关系
  • Python实现自动驾驶中的车道检测算法:从理论到实践
  • win10开了移动热点,手机无法连接,解决办法(chatgpt版)
  • 手机SIM卡打电话时识别对方按下的DTMF按键(二)
  • SpringBoot整合RabbitMQ(Java注解方式配置)
  • CMake基础介绍
  • D. Pythagorean Triples 题解
  • 手机打电话时由对方DTMF响应切换多级IVR语音应答(一)
  • \documentclass[lettersize,journal]{IEEEtran}什么意思
  • 机器人强化学习入门学习笔记(二)
  • DeepSeek-Prover-V2:数学定理证明领域的新突破
  • Dify网页版 + vllm + Qwen
  • Matlab自学笔记五十三:保存save和载入load
  • 杨校老师竞赛课之C++备战蓝桥杯初级组省赛
  • Python爬虫实战:获取优美图库各类高清图片,为用户提供设计素材
  • 洛谷 P9007 [入门赛 #9] 最澄澈的空与海 (Hard Version)
  • 【从零开始学习微服务 | 第一篇】单体项目到微服务拆分实践
  • 本地MySQL连接hive
  • ASP.NET Core 请求限速的ActionFilter
  • 算法中的数学:质数(素数)
  • 30天通过软考高项-第十一天