社区讨论

P1098求条(玄关 )

题目总版参与者 1已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mhjrhk52
此快照首次捕获于
2025/11/04 07:18
4 个月前
此快照最后确认于
2025/11/04 07:18
4 个月前
查看原帖
Code
CPP
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3;
string c;
string ans;
string solve(char l,char r){
	string res="";
	if(r-l==1){
		return res;
	}
	if(r<=l||(l>='a'&&l<='z'&&r>='0'&&r<='9')||(r>='a'&&r<='z'&&l>='0'&&l<='9')){
		return "-";
	}
	if(p1==3){
		for(int i=l;i<r-1;i++){
			char k='*';
			for(int j=1;j<=p2;j++){
				res+=k;
			}
		}
	}
	else{
		if(l>='a'&&l<='z'){
			for(int i=l-'a'+1;i<=r-'a'-1;i++){
				char k=i+'a';
				if(p1==2){
					k=k-('a'-'A');
				}
				for(int j=1;j<=p2;j++){
					res+=k;
				}
			}
		}
		else if(l>='0'&&l<='9'){
			for(int i=l-'0'+1;i<=r-'0'-1;i++){
				char k=i+'0';
				for(int j=1;j<=p2;j++){
					res+=k;
				}
			}
		}
	}
	if(p3==2){
		for(int i=0;i<res.size()/2;i++){
			swap(res[i],res[res.size()-1-i]);
		}
	}
	return res;
}
int main(){
	cin>>p1>>p2>>p3;
	cin>>c;
	if(c[0]=='-'){
		cout<<'-';
		for(int i=1;i<c.size();i++){
			if(c[i]!='-'){
				ans+=c[i];
			}
			else{
				string s=solve(c[i-1],c[i+1]);
				ans+=s;
			}
		}
		cout<<ans;
		return 0;
	}
	for(int i=0;i<c.size();i++){
		if(c[i]!='-'){
			ans+=c[i];
		}
		else{
			string s=solve(c[i-1],c[i+1]);
			ans+=s;
		}
	}
	cout<<ans;
	return 0;
}

回复

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

正在加载回复...