记录编号 132519 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]字符串的展开 最终得分 100
用户昵称 Gravatar水中音 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2014-10-26 06:10:23 内存使用 0.31 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<vector>
  4. using namespace std;
  5. char s[110];
  6. int i=0,p1,p2,p3,j,zj,m;
  7. vector<char> A;
  8. vector<char>::iterator B;
  9. void work1()//1,1
  10. {
  11. zj=s[i+1];
  12. for(char c=s[i-1]+1;c<zj;c++)
  13. for(j=1;j<=p2;j++)
  14. A.push_back(c);
  15. }
  16. void work2()
  17. {
  18. if(s[i-1]>='a'&&s[i-1]<='z')
  19. {
  20. zj=s[i+1]-32;
  21. for(char c=s[i-1]-31;c<zj;c++)
  22. for(j=1;j<=p2;j++)
  23. A.push_back(c);
  24. }
  25. else
  26. {
  27. zj=s[i+1];
  28. for(char c=s[i-1]+1;c<zj;c++)
  29. for(j=1;j<=p2;j++)
  30. A.push_back(c);
  31. }
  32. }
  33. void work3()
  34. {
  35. zj=s[i+1];
  36. for(char c=s[i-1]+1;c<zj;c++)
  37. for(j=1;j<=p2;j++)
  38. A.push_back('*');
  39. }
  40. void work4()
  41. {
  42. zj=s[i-1];
  43. for(char c=s[i+1]-1;c>zj;c--)
  44. for(j=1;j<=p2;j++)
  45. A.push_back(c);
  46. }
  47. void work5()
  48. {
  49. if(s[i-1]>='a'&&s[i-1]<='z')
  50. {
  51. zj=s[i-1]-32;
  52. for(char c=s[i+1]-33;c>zj;c--)
  53. for(j=1;j<=p2;j++)
  54. A.push_back(c);
  55. }
  56. else
  57. {
  58. zj=s[i-1];
  59. for(char c=s[i+1]-1;c>zj;c--)
  60. for(j=1;j<=p2;j++)
  61. A.push_back(c);
  62. }
  63. }
  64. void work6()
  65. {
  66. zj=s[i+1];
  67. for(char c=s[i-1]+1;c<zj;c++)
  68. for(j=1;j<=p2;j++)
  69. A.push_back('*');
  70. }
  71. int main()
  72. {
  73. freopen("expand.in","r",stdin);
  74. freopen("expand.out","w",stdout);
  75. scanf("%d%d%d",&p1,&p2,&p3);
  76. scanf("%s",s);
  77. m=0;i=0;
  78. while(s[m]!=' '&&s[m]!='\0'&&s[m]!='\n')m++;
  79. while(s[i]=='-')
  80. {
  81. A.push_back(s[i]);
  82. i++;
  83. }
  84. for(;i<m;i++)
  85. {
  86. if(s[i]!='-')A.push_back(s[i]);
  87. else
  88. {
  89. if(s[i+1]!=' ')
  90. {
  91. if((s[i-1]<='z'&&s[i+1]<='z'&&s[i-1]>='a'&&s[i+1]>='a')||(s[i-1]<='9'&&s[i+1]<='9'&&s[i-1]>='0'&&s[i+1]>='0'))
  92. {
  93. if(s[i+1]<=s[i-1])
  94. {
  95. A.push_back(s[i]);
  96. continue;
  97. }
  98. else
  99. {
  100. if(p3==1)
  101. {
  102. if(p1==1)work1();
  103. if(p1==2)work2();
  104. if(p1==3)work3();
  105. }
  106. else
  107. {
  108. if(p1==1)work4();
  109. if(p1==2)work5();
  110. if(p1==3)work6();
  111. }
  112. }
  113. }
  114. else A.push_back(s[i]);
  115. }
  116. }
  117. }
  118. for(B=A.begin();B!=A.end();B++)
  119. printf("%c",*B);
  120. return 0;
  121. }