比赛 清明时节雨纷纷,今天天气很晴朗 评测结果 ATAAATTATA
题目名称 外星密码 最终得分 60
用户昵称 皓芷 运行时间 4.003 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2017-04-07 19:12:59
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<stack>
using namespace std;
stack<char>c,ans;
string a;
int l,r;
void innt(int l,int r,int k)
{
	int j=k;
	stack<char>b,d;
	for(int i=l;i<r;i++)
	{
	  if(a[i]<='9'&&a[i]>='0')
	  {
		if(a[i+1]<='9'&&a[i+1]>='0'){j*=(a[i]-'0')*10+(a[i+1]-'0');i+=2;}
	    else {j*=(a[i]-'0');i++;}
	  }
	  if(a[i]=='['){innt(i+1,a.find(']'),j);i=a.find(']')+1;}
	  if(a[i]>=65&&a[i]<=90){b.push(a[i]);c.push(a[i]);}
	}
	for(int i=1;i<j;i++)
	{
	  while(!b.empty())
	  {
		d.push(b.top());
		b.pop();
	  }
	  while(!d.empty())
	  {
	  	c.push(d.top());
	  	b.push(d.top());
	  	d.pop();
	  }
	}
}
int main()
{
	freopen("passworda.in","r",stdin);
	freopen("passworda.out","w",stdout);
	cin>>a;
	l=0;
	r=a.size();
	innt(l,r,1);
	while(!c.empty())
	{
	  ans.push(c.top());
	  c.pop();
	}
	while(!ans.empty())
	{
	  cout<<ans.top();
	  ans.pop();
	}
	return 0;
}