记录编号 |
47145 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺十三]外星密码 |
最终得分 |
100 |
用户昵称 |
Makazeu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2012-10-30 22:25:33 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <stack>
#include <cctype>
#include <algorithm>
#include <iostream>
using namespace std;
string str;
inline string delenter(string a)
{
for(unsigned int i=0;i<a.length();i++)
if(a[i]==10 || a[i]==13) return a.substr(0,i);
return a;
}
string deal(int s,int e)
{
int num=0,pos,tmppos=e+1;
string tmp="";stack<int> poses;
for(int i=s;i<=e;i++)
{
if(!isdigit(str[i])) {pos=i;break;}
num=num*10+str[i]-'0';
}
for(int i=pos;i<=e;i++)
{
if(str[i]!='['&&str[i]!=']'&&poses.empty()) {tmp.push_back(str[i]);continue;}
if(str[i]=='[') {poses.push(i);continue;}
if(str[i]==']')
{
tmppos=poses.top();poses.pop();
if(poses.empty()) tmp+=deal(tmppos+1,i-1);
}
}
string now="";
for(int i=1;i<=num;i++)
now+=tmp;
return now;
}
int main()
{
freopen("passworda.in","r",stdin);
freopen("passworda.out","w",stdout);
//getline(cin,str); str=delenter(str);
cin>>str;
str="[1"+str+']';
cout<<deal(1,str.length()-2)<<endl;
return 0;
}