比赛 清明时节雨纷纷,今天天气很晴朗 评测结果 AAAAAAAAAA
题目名称 外星密码 最终得分 100
用户昵称 Menamovic 运行时间 0.005 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2017-04-07 19:39:07
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<stack>
#include<cstring>
using namespace std;
const int L=20000+100;
char s[L];
int len;
int i,j;
stack<char> a,b,ans;
stack<int> c;
void scanf_()
{
	freopen("passworda.in","r",stdin);
	freopen("passworda.out","w",stdout);
	scanf("%s",s);
	len=strlen(s);
}
void work_()
{
	for(i=0;i<len;i++)
	{
		if(isdigit(s[i]))
		{
			int temp=0;
			while(isdigit(s[i]))
			{
				temp*=10;
				temp+=s[i]-'0';
				i++;
			}
			c.push(temp);//每一个循环次数 
		}
		if(s[i]!=']')
		{
			b.push(s[i]);//b中存'['和大写字母 
		}
		else
		{
			string temp1,temp2;
			char temp3=b.top();b.pop();
			while (temp3!='[')
			{
				temp1+=temp3;
				temp3=b.top();b.pop();
			}
			int temp4=c.top();c.pop();
			while(temp4--)
			{
				temp2+=temp1;
			}
			for(j=temp2.size()-1;j>=0;j--)
			{
				b.push(temp2[j]);//倒序存放答案 
			}
		}
	}
}
void printf_()
{
	while(!b.empty())
	{
		ans.push(b.top());b.pop();
	}
	while(!ans.empty())
	{
		printf("%c",ans.top());ans.pop();
	}
}
int main()
{
	scanf_();
	work_();
	printf_();
	return 0;
}