#include<bits/stdc++.h>
#define num(x) (x>='0'&&x<='9' || x>='A'&&x<='Z')
using namespace std;
string s[105];//用string方便存储展开后的字符串
int p1,p2,p3,k;
void filll(int point,char l,char r,int dx) {//展开函数
if(p1==2)//转大写
dx=32;
else if(p1==3)
dx=INT_MAX;//方便设为星号
if(num(l))
dx=0;
if(l==r || num(l)&&!num(r) || !num(l)&&num(r))//判断'-'两边不同类情况 与l和r相同
{
s[point]="-";
return;
}
if(p3==2) {
for(char p=r-1; p>l; p--) {//倒序
for(int q=0; q<p2; q++)
s[point]+=char(max(int(p-dx),int('*')));//设置成星号
}
} else {
for(char p=l+1; p<r; p++) {//正序
for(int q=0; q<p2; q++)
s[point]+=char(max(int(p-dx),int('*')));
}
}
}
int main() {
cin>>p1>>p2>>p3;
char c;
getchar();//疑似此处问题
while((c=getchar())!='\n')
s[k++][0]=c;
for(int i=1; i<k-1; i++) {
if(s[i]=="-") {
char l=s[i-1][0],r=s[i+1][0];
if(r-l==1)
continue;
s[i]="";
filll(i,l,r,0);
}
}
for(int i=0; i<k; i++)
if(s[i]!=" ")
cout<<s[i];
return 0;
}
爆零,too short on line 1