比赛 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;
}