忘了数字-'-'也会小于27,也是裂开了
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int p1,p2,p3,d=0;
string s,ans;
cin>>p1>>p2>>p3>>s;
for(int m=0;m<s.size();m++)
{
string rp;
if((m==0||m==s.size()-1)&&s[m]=='-'){ans+=s[m]; continue;};
if(s[m]=='-'&&s[m+1]>s[m-1]&&(s[m+1]-s[m-1]<=27)&&s[m-1]>='0')
{
if(p1==1){
for(int i=1;i<=s[m+1]-s[m-1]-1;i++){
for(int j=0;j<p2;j++){
rp+=s[m-1]+i;
}
}
}
else if(p1==3){
for(int i=1;i<=s[m+1]-s[m-1]-1;i++){
for(int j=0;j<p2;j++)
rp+='*';
}
}
else if(p1==2){
if(s[m-1]>='a'){
char a='A'+abs(s[m-1]-'a');
for(int i=1;i<=s[m+1]-s[m-1]-1;i++){
for(int j=0;j<p2;j++)
rp+=(a+i);
}
}
else {
for(int i=1;i<=s[m+1]-s[m-1]-1;i++){
for(int j=0;j<p2;j++)
rp+=s[m-1]+i;
}
}
}
if(p3==2)reverse(rp.begin(), rp.end());
ans+=rp;
}
else if (s[m] == '-' &&s[m + 1] == s[m - 1] + 1)continue;
else if (m>=1&&s[m + 1]<=s[m-1] ) ans+=s[m];
else ans+=s[m];
}
cout<<ans;
}

京公网安备 11010502036488号