记录编号 |
171913 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2007]字符串的展开 |
最终得分 |
100 |
用户昵称 |
forever |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2015-07-21 14:11:16 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<vector>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
char s[998];
int i=0,p1,p2,p3,j,zj,m;
vector<char>::iterator B;
vector<char> A;
void w1()
{
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 w2()
{
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 w3()
{
zj=s[i+1];
for(char c=s[i-1]+1;c<zj;c++)
for(j=1;j<=p2;j++)
A.push_back('*');
}
void w4()
{
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 w5()
{
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 w6()
{
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)w1();
if(p1==2)w2();
if(p1==3)w3();
}else
{
if(p1==1)w4();
if(p1==2)w5();
if(p1==3)w6();
}
}
}
else A.push_back(s[i]);
}
}
}
for(B=A.begin();B!=A.end();B++)
printf("%c",*B);
return 0;
}