测试点5out数据跟我代码跑出来一样
#include<bits/stdc++.h>
using namespace std;
int main(){
int p1,p2,p3;
string s;
cin>>p1>>p2>>p3>>s;
for(int i=0;i<s.length();i++){
if(s[i]=='-'){
//判断情况是否为5.1
if(int(s[i-1])+1==int(s[i+1]))continue;
//判断情况是否为5.2
else if(int(s[i-1])>=int(s[i+1])||((s[i-1]>='0'&&s[i-1]<='9'&&s[i+1]>='a'&&s[i+1]<='z')||(s[i-1]>='a'&&s[i-1]<='z'&&s[i+1]>='0'&&s[i+1]<='9'))){
cout<<'-';
continue;
}
//若否:
else{
//判断是否为顺序
if(p3==1){
for(int j=int(s[i-1])+1;j<int(s[i+1]);j++){
//循环p2次
for(int k=1;k<=p2;k++){
if(p1==1)cout<<char(j);
else if(p1==2)cout<<char(j-32);
else cout<<'*';
}
}
}
//若否
else{
for(int j=(int(s[i+1])-1);j>(int(s[i-1]));j--){
for(int k=1;k<=p2;k++){
if(p1==1)cout<<char(j);
else if(p1==2)cout<<char(j-32);
else cout<<'*';
}}}}}
else cout<<s[i];
}
return 0;
}