记录编号 |
132519 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2007]字符串的展开 |
最终得分 |
100 |
用户昵称 |
水中音 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.005 s |
提交时间 |
2014-10-26 06:10:23 |
内存使用 |
0.31 MiB |
显示代码纯文本
- #include<cstdio>
- #include<iostream>
- #include<vector>
- using namespace std;
- char s[110];
- int i=0,p1,p2,p3,j,zj,m;
- vector<char> A;
- vector<char>::iterator B;
- void work1()//1,1
- {
- zj=s[i+1];
- for(char c=s[i-1]+1;c<zj;c++)
- for(j=1;j<=p2;j++)
- A.push_back(c);
- }
- void work2()
- {
- if(s[i-1]>='a'&&s[i-1]<='z')
- {
- zj=s[i+1]-32;
- for(char c=s[i-1]-31;c<zj;c++)
- for(j=1;j<=p2;j++)
- A.push_back(c);
- }
- else
- {
- zj=s[i+1];
- for(char c=s[i-1]+1;c<zj;c++)
- for(j=1;j<=p2;j++)
- A.push_back(c);
- }
- }
- void work3()
- {
- zj=s[i+1];
- for(char c=s[i-1]+1;c<zj;c++)
- for(j=1;j<=p2;j++)
- A.push_back('*');
- }
- void work4()
- {
- zj=s[i-1];
- for(char c=s[i+1]-1;c>zj;c--)
- for(j=1;j<=p2;j++)
- A.push_back(c);
- }
- void work5()
- {
- if(s[i-1]>='a'&&s[i-1]<='z')
- {
- zj=s[i-1]-32;
- for(char c=s[i+1]-33;c>zj;c--)
- for(j=1;j<=p2;j++)
- A.push_back(c);
- }
- else
- {
- zj=s[i-1];
- for(char c=s[i+1]-1;c>zj;c--)
- for(j=1;j<=p2;j++)
- A.push_back(c);
- }
- }
- void work6()
- {
- zj=s[i+1];
- for(char c=s[i-1]+1;c<zj;c++)
- for(j=1;j<=p2;j++)
- A.push_back('*');
- }
- int main()
- {
- freopen("expand.in","r",stdin);
- freopen("expand.out","w",stdout);
- scanf("%d%d%d",&p1,&p2,&p3);
- scanf("%s",s);
- m=0;i=0;
- while(s[m]!=' '&&s[m]!='\0'&&s[m]!='\n')m++;
- while(s[i]=='-')
- {
- A.push_back(s[i]);
- i++;
- }
- for(;i<m;i++)
- {
- if(s[i]!='-')A.push_back(s[i]);
- else
- {
- if(s[i+1]!=' ')
- {
- 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'))
- {
- if(s[i+1]<=s[i-1])
- {
- A.push_back(s[i]);
- continue;
- }
- else
- {
- if(p3==1)
- {
- if(p1==1)work1();
- if(p1==2)work2();
- if(p1==3)work3();
- }
- else
- {
- if(p1==1)work4();
- if(p1==2)work5();
- if(p1==3)work6();
- }
- }
- }
- else A.push_back(s[i]);
- }
- }
- }
- for(B=A.begin();B!=A.end();B++)
- printf("%c",*B);
- return 0;
- }