记录编号 | 418996 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2007]字符串的展开 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.000 s | ||
提交时间 | 2017-07-02 08:07:51 | 内存使用 | 0.00 MiB | ||
#include<cstdio> #include<cctype> #include<queue> #include<cstring> using namespace std; int p1,p2,p3,l; char c[101]; queue<char> q; inline void in(int &x){ x=0;int f=1;char c=getchar(); while(!isdigit(c)){if(c=='-')f=-1;c=getchar();} while(isdigit(c)){x=x*10+c-48;c=getchar();} x*=f; } inline void out(int x){//负数不可 char c[10]={0}; while(c[++c[0]]=x%10+'0',x/=10,x); while(putchar(c[c[0]]),--c[0],c[0]); } inline int mian(){ freopen("expand.in","r",stdin); freopen("expand.out","w",stdout); in(p1);in(p2);in(p3); scanf("%s",c+1);l=strlen(c+1); for(int i=1;i<=l;i++){ if(c[i]!='-'||i==1||i==l){ q.push(c[i]);continue; } if(c[i]=='-'&&c[i-1]!='-'&&c[i+1]!='-'&&isdigit(c[i-1])==isdigit(c[i+1])&&c[i-1]<c[i+1]){ if(p1==1||(p1==2&&isdigit(c[i-1]))){ if(p3==1){ for(int j=c[i-1]+1;j<c[i+1];j++) for(int k=1;k<=p2;k++) q.push(j); }else{ for(int j=c[i+1]-1;j>c[i-1];j--) for(int k=1;k<=p2;k++) q.push(j); } } if(p1==2&&(!isdigit(c[i-1]))){ if(p3==1){ for(int j=c[i-1]-31;j<c[i+1]-32;j++) for(int k=1;k<=p2;k++) q.push(j); }else{ for(int j=c[i+1]-33;j>c[i-1]-32;j--) for(int k=1;k<=p2;k++) q.push(j); } } if(p1==3){ for(int j=c[i-1]+1;j<c[i+1];j++) for(int k=1;k<=p2;k++) q.push('*'); } }else{ q.push(c[i]); } } while(!q.empty()){ putchar(q.front()); q.pop(); } return 0; } int miku=mian(); int main(){;}