比赛 |
练习赛 |
评测结果 |
AAAAAAAAAA |
题目名称 |
字符串的展开 |
最终得分 |
100 |
用户昵称 |
liujiaqi |
运行时间 |
0.005 s |
代码语言 |
C++ |
内存使用 |
13.66 MiB |
提交时间 |
2019-05-22 20:37:39 |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#define maxn 130
using namespace std;
int p1,p2,p3,n,ch,a,b;
int s[maxn];
char t[maxn];
int check(int x,int y){
if(x>=y)return 0;
if(x>=48&&x<=57&&y>=48&&y<=57)return 1;
if(x>=97&&x<=122&&y>=97&&y<=122)return 2;
return 0;
}
int main(){
freopen("expand.in","r",stdin);
freopen("expand.out","w",stdout);
scanf("%d%d%d",&p1,&p2,&p3);
scanf("%s",t);n=strlen(t);
s[0]=t[0]; //p1:内容; p2:次数; p3:正逆;
for(int i=0;i<n;i++){
s[i+1]=t[i+1];ch=check(s[i-1],s[i+1]);
if(s[i]!=45||i==0||i==n||(!ch)){
printf("%c",s[i]);continue;
}
if(s[i-1]+1==s[i+1])continue;
a=s[i-1]+1;b=s[i+1]-1;
if(p3==1)
for(int i=a;i<=b;i++)
for(int j=1;j<=p2;j++){
if(p1==1)printf("%c",i);
else if(p1==2){
if(ch==1)printf("%c",i);
else printf("%c",i-32);
}
else printf("*");
}
else
for(int i=b;i>=a;i--)
for(int j=1;j<=p2;j++){
if(p1==1)printf("%c",i);
else if(p1==2){
if(ch==1)printf("%c",i);
else printf("%c",i-32);
}
else printf("*");
}
}
return 0;
}