社区讨论

全RE求助,感觉思路没问题

P10058Reverse and Rotate参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lrt4wg6r
此快照首次捕获于
2024/01/25 19:32
2 年前
此快照最后确认于
2024/01/25 21:29
2 年前
查看原帖
CPP
	#include<bits/stdc++.h>
	#define int long long
	using namespace std;
	string a;
	signed main(){
	    cin >> a;
	    int T;
	    cin >> T;
	    bool flag = 0;
	    int left = 0;
	    while(T--){
	    	string s;
	    	cin >> s;
	    	if(s == "rev"){
	    		flag = (flag == 0);
	    		continue;
	    	}
	    	int sum;
	    	cin >> sum;
	    	if(s[0] == '<') {
	    		if(flag == 0) left += sum;
	    		else left -= sum;
	    	}
	    	if(s[0] == '>'){
	    		if(flag == 0) left -= sum;
	    		else left += sum;
	    	}
		}
	    char ans[50];
	    int cnt = 0;
	    left %= a.length();
	   	if(left >= 0){
	   		for(int i = left;i < a.length();i++){
	   			ans[cnt] = a[i];
	   			cnt ++;
			}
	   		for(int i = 0;i < left;i++){
	   			ans[cnt] = a[i];
	   			cnt ++;
	   		}
	   	}
	   	else{
	   		left = -left;
	   		//cout << left;
	   		for(int i = a.length() - left;i < a.length();i++){
	   			ans[cnt] = a[i];
	   			cnt ++;
			}
	   		for(int i = 0;i < a.length() - left;i++){
	   			ans[cnt] = a[i];
	   			cnt ++;
	   		}
	   	}
	   	if(flag == 1) {
	   		for(int i = a.length() - 1;i >= 0;i--){
	   			cout << ans[i];
	   		}
	   	}
	   	else {
	   		for(int i = 0;i < a.length();i++){
	   			cout << ans[i];
	   		}
	   	}
	}

回复

1 条回复,欢迎继续交流。

正在加载回复...