XM33. 小明的字符串
描述
小明同学需要对一个长度为 N 的字符串进行处理,他需要按照要求执行若干步骤,每个步骤都均为下面 2 种操作中的一种,2 种操作如下:输入描述
第一行,包含两个整数,字符串的长度 N 和操作次数T;输出描述
操作的执行结果示例1
输入:
6 2 xiaomi 1 2 2 0
输出:
m
C++ 解法, 执行用时: 4ms, 内存消耗: 508KB, 提交时间: 2020-07-19
#include <cstdio> #include <cstdlib> #include <cstring> using namespace std; const int maxn(1e4 + 5); char root[maxn << 1]; int main() { int n, m; scanf("%d%d", &n, &m); scanf("%s", root); memcpy(root + n, root, n); int head = 0, tail = n; int op, x; while(m--) { scanf("%d%d", &op, &x); if(op == 1) { head = (tail - x + n) % n; tail = (head + n) % (2 * n); } else if (op == 2) { printf("%c\n", root[(head + x) % n]); } } return 0; }
C 解法, 执行用时: 5ms, 内存消耗: 388KB, 提交时间: 2021-08-18
#include <stdio.h> int main(void) { int n,t; char str[10001] = {0}; scanf("%d",&n); scanf("%d",&t); scanf("%s",str); int cur =0; while(t--) { int tpye=0,x = 0; scanf("%d",&tpye); scanf("%d",&x); if(tpye == 1) { cur = cur-x; //printf("%d\n",cur); if(cur<0)cur= cur+n; //printf("%d\n",cur); } else { //printf("%d\n",cur); // printf("%d\n",cur + x); printf("%c\n",str[(cur + x)%n]); } } }