比赛 练习赛 评测结果 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;
}