题意: 让你将最左边或者最右边的x个 移动到最右边或最左边。
定义一个 pos 记录开始位置就可以了往左移了开始位置就是 pos+x,右移就是(pos+k+len)%len.防止负号
用cin,string超时了,代码:
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const double eps = 1e-4;
const int mod = 998244353;
const int N = 2000010;
char s[N],a[10];
signed main(){
// IOS;
#ifdef ddgo
freopen("C:/Users/asus/Desktop/ddgoin.txt","r",stdin);
#endif
// string s;int n; cin>>s>>n;
// int len = (int)s.size(),k = 0;
// string a;int x;
// while(n --){
// cin>>a>>x;
// if(a[0] == 'A') cout<<s[(x+k+len-1)%(int)len]<<endl;
// else k = (k+x+len)%len;
// }
int n;scanf("%s%lld",s,&n);
int len = strlen(s),x,k = 0;
while(n --){
scanf("%s%lld",a,&x);
if(a[0] == 'A') printf("%c\n",s[(x+k+len-1)%(int)len]);
else k = (k+x+len)%len;
}
return 0;
}