记录编号 | 167916 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2007]字符串的展开 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.008 s | ||
提交时间 | 2015-06-29 17:19:56 | 内存使用 | 0.31 MiB | ||
#include<cstdio> #include<string> #include<iostream> using namespace std; int p1,p2,p3; string s; string t1("0123456789"); string t2; int main() { freopen("expand.in","r",stdin); freopen("expand.out","w",stdout); scanf("%d%d%d",&p1,&p2,&p3); if(p1==1) t2="abcdefghijklmnopqrstuvwxyz"; if(p1==2) t2="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; if(p1==3) {t2="**************************";t1="**********";} cin>>s; for(int i=0;i<s.length();i++) { if(s[i]=='-'&&i>0) { if((('a'<=s[i-1]&&s[i-1]<='z'&&'a'<=s[i+1]&&s[i+1]<='z')||('0'<=s[i-1]&&s[i-1]<='9'&&'0'<=s[i+1]&&s[i+1]<='9'))&&s[i-1]<s[i+1]) { string s1=s.substr(i+1); s.erase(i); int n,m; if('a'<=s[i-1]) {n=s[i-1]-'a'+1;m=s[i+1]-'a'-1;} else {n=s[i-1]-'0'+1;m=s[i+1]-'0'-1;} if(p3==1) { for(int j=n;j<=m;j++) { for(int k=1;k<=p2;k++) { if('a'<=s[i-1]) s+=t2[j]; else s+=t1[j]; } } } if(p3==2) { for(int j=m;j>=n;j--) { for(int k=1;k<=p2;k++) { if('a'<=s[i-1]) s+=t2[j]; else s+=t1[j]; } } } //cout<<s1<<endl; s+=s1; } } } cout<<s<<endl; return 0; }