记录编号 36643 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]字符串的展开 最终得分 100
用户昵称 GravatarCzb。 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2012-03-15 21:12:33 内存使用 0.29 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<string.h>
  4. #define loop1(p,q,r) for(char j=p;j<=q;j++)for(int k=1;k<=r;k++)printf("%c",j)
  5. #define loop2(p,q,r) for(char j=q;j>=p;j--)for(int k=1;k<=r;k++)printf("%c",j)
  6. #define loop3(p,q,r) for(char j=q;j>=p;j--)for(int k=1;k<=r;k++)printf("*")
  7.  
  8. int a,b,c,l;
  9.  
  10. char s[101];
  11.  
  12. int main(int argc,char *argv[])
  13. {
  14. freopen("expand.in","r",stdin);
  15. freopen("expand.out","w",stdout);
  16. int i;
  17. scanf("%d%d%d\n%s",&a,&b,&c,s);
  18. l=strlen(s);
  19. for(i=0;i<l;i++)
  20. {
  21. if(s[i]!='-')printf("%c",s[i]);
  22. else if(!i||i==l-1)printf("-");
  23. else if(s[i-1]>=s[i+1])printf("-");
  24. else if(s[i-1]=='-'||s[i+1]=='-')printf("-");
  25. else if(isdigit(s[i-1])&&!isdigit(s[i+1]))printf("-");
  26. else if(islower(s[i-1])&&!islower(s[i+1]))printf("-");
  27. else if(isupper(s[i-1])&&!isupper(s[i+1]))printf("-");
  28. else if(a==1&&c==1)loop1(tolower(s[i-1]+1),tolower(s[i+1]-1),b);
  29. else if(a==1&&c==2)loop2(tolower(s[i-1]+1),tolower(s[i+1]-1),b);
  30. else if(a==2&&c==1)loop1(toupper(s[i-1]+1),toupper(s[i+1]-1),b);
  31. else if(a==2&&c==2)loop2(toupper(s[i-1]+1),toupper(s[i+1]-1),b);
  32. else if(a==3)loop3(s[i-1]+1,s[i+1]-1,b);
  33. }
  34. return 0;
  35. }