有问题
查看原帖
有问题
928004
zyxb0819楼主2024/1/15 09:44
#include<bits/stdc++.h>
#define int long long
using namespace std;
string s,opt;
int n,num,x,ls;char ans[1000006];
bool flag=false;
signed main() {
	cin>>s>>n;
	ls=s.size();
	for(int i=1;i<=n;i++){
        cin>>opt;
        if(opt==">"){
           cin>>x;
           num=(num+x%ls)%ls;
        }
        if(opt=="<"){
           cin>>x;
           num=(num-x%ls+ls)%ls;
        }
        if(opt=="rev"){
            num=ls-num+1;
            flag=!flag;
        }
	}
	int wz=0;
	if(flag){
            wz=0;
		for(int i=num;i>0;i--)ans[i]=s[wz],wz++;
		for(int i=ls;i>num;i--)ans[i]=s[wz],wz++;
	}
	else {
	    wz=0;
        for(int i=num;i<=ls;i++)ans[i]=s[wz],wz++;
        for(int i=1;i<num;i++)ans[i]=s[wz],wz++;
	}
	for(int i=1;i<=ls;i++)cout<<ans[i];
	return 0;
}

为什么上面代码会向右多走一次??\text{为什么上面代码会向右多走一次??}

2024/1/15 09:44
加载中...