记录编号 549450 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]字符串的展开 最终得分 100
用户昵称 Gravatar锝镆氪锂铽 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2020-02-11 22:18:32 内存使用 0.00 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;

void output(int loc,int p1,int p2,int p3);

char st[101];
int exp(){
	freopen("expand.in","r",stdin);
	freopen("expand.out","w",stdout);
	int p1,p2,p3,p=0;
	scanf("%d%d%d",&p1,&p2,&p3);
	scanf("%s",st);
	while(st[p]=='-')
		putchar(st[p++]);
	for(int i=p;i<strlen(st);i++){
		if(st[i]=='-'){
			output(i,p1,p2,p3);
			continue;
		}
		if(st[i]!=64)
			putchar(st[i]);
	}
	return 0;
}

int lol=exp();
int main(void){;}

void output(int loc,int p1,int p2,int p3){
	if(st[loc+1]=='-'||st[loc-1]=='-'){
		printf("-");
		return;
	}
	switch(p1){
		case 1:{
			switch(p3){
				case 1:{
					if(st[loc-1]>=st[loc+1]||(!(isalpha(st[loc+1]))&&isalpha(st[loc-1]))||((!isalpha(st[loc-1]))&&isalpha(st[loc+1]))){
						putchar('-');
						break;
					}
					for(char ch=st[loc-1]+1;ch<st[loc+1];ch++){
						for(int i=1;i<=p2;i++)putchar(ch);
					}
					break;
				}
				case 2:{
					if(st[loc-1]>=st[loc+1]||(!(isalpha(st[loc+1]))&&isalpha(st[loc-1]))||((!isalpha(st[loc-1]))&&isalpha(st[loc+1]))){
						putchar('-');
						break;
					}
					for(char ch=st[loc+1]-1;ch>st[loc-1];ch--){
						for(int i=1;i<=p2;i++)putchar(ch);
					}
					break;
				}
			}
			break;
		}
		case 2:{
			switch(p3){
				case 1:{
					if(st[loc-1]>=st[loc+1]||(!(isalpha(st[loc+1]))&&isalpha(st[loc-1]))||((!isalpha(st[loc-1]))&&isalpha(st[loc+1]))){
						putchar('-');
						break;
					}
					for(char ch=st[loc-1]+1;ch<st[loc+1];ch++){
						for(int i=1;i<=p2;i++)putchar(toupper(ch));
					}
					break;
				}
				case 2:{
					if(st[loc-1]>=st[loc+1]||(!(isalpha(st[loc+1]))&&isalpha(st[loc-1]))||((!isalpha(st[loc-1]))&&isalpha(st[loc+1]))){
						putchar('-');
						break;
					}
					for(char ch=st[loc+1]-1;ch>st[loc-1];ch--){
						for(int i=1;i<=p2;i++)putchar(toupper(ch));
					}
					break;
				}
			}
			break;
		}
		case 3:{
			if(st[loc-1]>=st[loc+1]||(!(isalpha(st[loc+1]))&&isalpha(st[loc-1]))||((!isalpha(st[loc-1]))&&isalpha(st[loc+1]))){
				putchar('-');
				break;
			}
			for(char ch=st[loc-1]+1;ch<st[loc+1];ch++){
				for(int i=1;i<=p2;i++)putchar('*');
			}
			break;
		}
	}
}