比赛 |
清明时节雨纷纷,今天天气很晴朗 |
评测结果 |
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;
}