本题题意:
存在一个字符串,对字符串有两种操作:
1.对字符串中第x个字符进行输出
2.对字符串最左边的x个字符移到最右边 或 字符串最右边的x个字符移到最左边
题目实例中的过程:
操作为c = 'M’时,如果 x>0 ,则将最左侧的x位字符移到最右侧;下标将发生改变;此时x = 4 ,“nowc”移到最右边 。
操作为c = 'M’时,如果 x<0 ,则将最左侧的x位字符移到最右侧;下标将发生改变;此时x = -3,“owc”移到最左边。
此时x = 1 ,o 移到最右边
#include<iostream>
#include<string.h>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
std::ios::sync_with_stdio(false);
string arr;
char m;
ll Q,n,w=0,l;
cin>>arr;
l = arr.length();
cin>>Q;
for(ll i=0; i<Q; i++)
{
cin>>m>>n;
if(m=='A')
{
cout<<arr[(n-1+w)%l]<<endl;
}
else
{
if(n>0)
{
w=w+n;
}
else
{
w=(w+l-abs(n))%l;
}
}
}
return 0;
}
问题出现的时候,不要有太多情绪,要及时有效的解决问题,有些时候退一步,可能会找到其他的方法。加油【微笑】