```c
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3;
string s1,s2;
//判定条件严格按照题目要求两端都是小写字母或数字
bool f2(char ch){if(ch>='a'&&ch<='z') return 1; return 0;}//f2()函数判断是否是小写字母
bool f3(char ch){if(ch>='0'&&ch<='9') return 1; return 0;}//f3()函数判断是否是
int check(char l,char r){
if(f2(l)&&f2(r)||f3(l)&&f3(r)){
if(l+1 == r){//3-4
return 1;
}else if(l>=r){//3-1
return 2;
}else{
return 3;
}
}else{//a-3
return 2;
}
}
string f(char l,char r){
string s3; bool flag =false;
if(f2(l)) flag =1;
for(char i=l+1;i<r;i++){
for(int j=1;j<=p2;j++){
if(flag ==1){
if(p1==1) s3+=i;
else if(p1==2) s3+=i-'a'+'A';
else s3+='*';
}else{
if(p1 == 3) s3+='*';else s3+=i;
}
}
}
return s3;
}
int main(){
cin>>p1>>p2>>p3>>s1;
int len = s1.size();
for(int i=0;i<len;i++){
if(s1[i]=='-'){
int k =check(s1[i-1],s1[i+1]);//判定三种输出情况
if(k==1) continue;//3-4 忽略'-'的情况 34
else if(k==2) cout<<s1[i];//3-3 3-1 a-3 打印'-'
else{
s2=f(s1[i-1],s1[i+1]);//3-9获取展开的字符串
if(p3==1){//判断输出顺序
cout<<s2;//正序
}else{
for(int j=s2.size()-1;j>=0;j--)//逆序
cout<<s2[j];
}
s2.clear();//对临时的字符串变量清零
}
}else{
cout <<s1[i];
}
}
return 0;
}
```
by zhang13095534103 @ 2023-12-17 19:07:22