记录编号 36643 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]字符串的展开 最终得分 100
用户昵称 GravatarCzb。 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2012-03-15 21:12:33 内存使用 0.29 MiB
显示代码纯文本
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define loop1(p,q,r) for(char j=p;j<=q;j++)for(int k=1;k<=r;k++)printf("%c",j)
#define loop2(p,q,r) for(char j=q;j>=p;j--)for(int k=1;k<=r;k++)printf("%c",j)
#define loop3(p,q,r) for(char j=q;j>=p;j--)for(int k=1;k<=r;k++)printf("*")

int a,b,c,l;

char s[101];

int main(int argc,char *argv[])
{
	freopen("expand.in","r",stdin);
	freopen("expand.out","w",stdout);
	int i;
	scanf("%d%d%d\n%s",&a,&b,&c,s);
	l=strlen(s);
	for(i=0;i<l;i++)
	{
		if(s[i]!='-')printf("%c",s[i]);
		else if(!i||i==l-1)printf("-");
		else if(s[i-1]>=s[i+1])printf("-");
		else if(s[i-1]=='-'||s[i+1]=='-')printf("-");
		else if(isdigit(s[i-1])&&!isdigit(s[i+1]))printf("-");
		else if(islower(s[i-1])&&!islower(s[i+1]))printf("-");
		else if(isupper(s[i-1])&&!isupper(s[i+1]))printf("-");
		else if(a==1&&c==1)loop1(tolower(s[i-1]+1),tolower(s[i+1]-1),b);
		else if(a==1&&c==2)loop2(tolower(s[i-1]+1),tolower(s[i+1]-1),b);
		else if(a==2&&c==1)loop1(toupper(s[i-1]+1),toupper(s[i+1]-1),b);
		else if(a==2&&c==2)loop2(toupper(s[i-1]+1),toupper(s[i+1]-1),b);
		else if(a==3)loop3(s[i-1]+1,s[i+1]-1,b);
	}
	return 0;
}