题目链接
题意:给出一个字符串,再给出n个操作,每个操作是把区间[l,r]循环右移k位
解法:模拟
收获:string的substr(start,length):string的substr函数参数,表示从某一个位置起长度是length的子串,而不是表示区间[L,R]的子串,一定要注意,当然第二个参数可以省略,省略就表示到末尾。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define X first
#define Y second
#define cl(a,b) memset(a,b,sizeof(a))
typedef pair<int,int> P;
const int maxn=10005;
const int inf=1<<27;
#define mod 1000000007
string s;
void work(int l,int r,int k){
int len=r-l+1;
k%=len;
string ll=s.substr(l,r-l+1-k);
string rr=s.substr(r-k+1,k);
//cout<<ll<<" "<<rr<<endl;
s=s.substr(0,l)+rr+ll+s.substr(r+1);
// cout<<"s = "<<s<<endl;
}
int main(){
cin>>s;
//cout<<s.substr(4,1);
int m;scanf("%d",&m);
while(m--){
int L,R,k;
scanf("%d%d%d",&L,&R,&k);
work(L-1,R-1,k);
}
cout<<s<<endl;
return 0;
}