比赛 |
20121030 |
评测结果 |
AWAAAEEAEA |
题目名称 |
外星密码 |
最终得分 |
60 |
用户昵称 |
Cloud |
运行时间 |
0.236 s |
代码语言 |
C++ |
内存使用 |
3.15 MiB |
提交时间 |
2012-10-30 19:52:03 |
显示代码纯文本
- #include<cstring>
- #include<fstream>
- #include<stack>
- using namespace std;
- int main(void)
- {
- ifstream fin("passworda.in");
- ofstream fout("passworda.out");
- stack<int> sk;
- string st;
- char s[20001];
- char ans[20001];
- int i,j=0,k=0;
- int num,p=0,q;
- bool f=0;
- fin>>st;
- for(i=0;i<st.size();i++)
- {
- if(st[i]>='A'&&st[i]<='Z')
- {
- if(f)
- {
- s[j]=st[i];
- j++;
- }
- else
- {
- ans[k]=st[i];
- k++;
- }
- }
- if(st[i]=='[')
- {
- sk.push(0);
- f=1;
- }
- if(st[i]>='0'&&st[i]<='9')
- {
- num=st[i]-'0';
- if(st[i+1]>='0'&&st[i+1]<='9')
- {
- num=num*10+(st[i+1]-'0');
- i++;
- }
- sk.push(num);
- }
- if(st[i]==']')
- {
- int n;
- n=j;
- num=sk.top(),sk.pop();
- for(p=1;p<num;p++)
- for(j=0;j<n;j++)
- s[p*n+j]=s[j];
- sk.pop();
- j=(num-1)*n+j;
- if(sk.empty())
- {
- n*=num;
- for(j=0;j<n;j++,k++)
- ans[k]=s[j];
- j=0;
- f=0;
- }
- }
- }
- for(i=0;i<k;i++)
- fout<<ans[i];
- fin.close();
- fout.close();
- return 0;
- }