coderforce 598B Queries on a String

题意:给出一个字符串(1<=长度<=10000),再给出m进行m次查询,接下来m行,每一行三个数L,r,k,L--r表示将字符串这个区间内的字符当成一个环来逆时针转 k 次,得到一个新字符串,以后每次查询修改,都是在此字符串基础上进行的。
思路:先用一个字符串临时存放(L--r)的字符,因为下标是从0开始,所以是(src[L-1]到src[r-1])位字符,再按每次查询修改k次进行修改因是环,所以位置 i --> (i+k)%(r-L+1);
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
const int maxm=1e5+10;
char s[maxm];
char temp[maxm];
int main()
{
    while(scanf("%s",s)!=EOF)
    {
        LL n,l,r,k;
        scanf("%lld",&n);
        for(LL i=0;i<n;i++)
        {
            LL cnt=0;
            scanf("%lld%lld%lld",&l,&r,&k);
            for(LL j=l-1;j<r;j++)
            {
                temp[j]=s[j];
            }
            for(LL j=l-1;j<r;j++)
            {
                s[l-1+(j-l+1+k)%(r-l+1)]=temp[j];
            }
        }
        printf("%s\n",s);
    }
    return 0;
}

你可能感兴趣的:(coderforce 598B Queries on a String)