记录编号 |
36643 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2007]字符串的展开 |
最终得分 |
100 |
用户昵称 |
Czb。 |
是否通过 |
通过 |
代码语言 |
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;
}