比赛 清明时节雨纷纷,今天天气很晴朗 评测结果 AAAAAAAAAA
题目名称 外星密码 最终得分 100
用户昵称 swttc 运行时间 0.004 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2017-04-07 19:53:41
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<stack>
#include<string>
#include<cstring>
using namespace std;
int kh,timea;
char c;
stack<int>timenum;
stack<string>ss;
string ans,tttt;
int main()
{
	freopen("passworda.in","r",stdin);
	freopen("passworda.out","w",stdout); 
	while(scanf("%c",&c)==1)
	{
		if(c=='\n') break;
		if(kh>0)
		{
			string ts;
			while(c!='['&&c!=']')
			{
				ts+=c;
				scanf("%c",&c);
			}
			ss.push(ts);
		}
		if(c=='[')
		{
			kh++;
			scanf("%d",&timea);
			timenum.push(timea);
			ss.push("[");
		}
		if(c==']')
		{
			kh--;
			int x;
			x=timenum.top();
			timenum.pop();
			string ts1,ts2;
			while(!ss.empty()&&ss.top()!="[")
			{
				//ts1+=ss.top();
				ts1=ss.top()+ts1;//绝对不能反着写,因为是字符串。 
				ss.pop();
			}
			ss.pop();
			for(int i=1;i<=x;i++)
			{
				ts2+=ts1;
			}
			ss.push(ts2);
		}
		if(kh<=0)
		{
			while(!ss.empty()&&ss.top()!="[")
			{
				ans+=ss.top();
				ss.pop();
			}
		}
		if(c!='['&&c!=']') ans+=c;
	}
	cout<<ans;
	return 0;
}