题目链接
操作较多不要漏
#include<cstdio>
#include<cstring>
#include<cctype>
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
#define rep_(i,a,b) for(int i=(a);i>=(b);i--)
int p1,p2,p3;
char s[110];
inline void work(char a,char b)
{
if(!((isdigit(a)&&isdigit(b))||(islower(a)&&islower(b)))){printf("-");return;}
if(a+1==b)return;
if(a>=b){printf("-");return;}
if(p1==3)_rep(i,a+1,b-1)_rep(j,1,p2)printf("*");
else if(isdigit(a))
{
if(p3==2)rep_(i,b-1,a+1)_rep(j,1,p2)printf("%c",(char)i);
else _rep(i,a+1,b-1)_rep(j,1,p2)printf("%c",(char)i);
}
else
{
if(p3==2)
{
if(p1==2)rep_(i,b-1,a+1)_rep(j,1,p2)printf("%c",toupper(i));
else rep_(i,b-1,a+1)_rep(j,1,p2)printf("%c",tolower(i));
}
else
{
if(p1==2)_rep(i,a+1,b-1)_rep(j,1,p2)printf("%c",toupper(i));
else _rep(i,a+1,b-1)_rep(j,1,p2)printf("%c",tolower(i));
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d%d%s",&p1,&p2,&p3,s+1);
int len=strlen(s+1);
_rep(i,1,len)
if(s[i]=='-')work(s[i-1],s[i+1]);
else printf("%c",s[i]);
return 0;
}