| 比赛 | 
    20251022赛前模拟1 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    解压缩 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    梦那边的美好TE | 
    运行时间 | 
    0.026 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.79 MiB  | 
    | 提交时间 | 
    2025-10-22 09:31:16 | 
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=505;
char s[N];
int stk[N],top;
string dfs(int l,int r){
	l++;int x=0;string now="",res="";
	while(s[l]>='0'&&s[l]<='9')x=x*10+s[l]-'0',l++;
	for(int i=l,j;i<r;i=j+1){
		if(s[i]!='['){
			j=i;
			now.push_back(s[i]); 
		}else{
			stk[top=1]='[';
			for(int k=i+1;;k++){
				if(s[k]=='[')stk[++top]='[';
				else if(s[k]==']'){
					if(top==1){
						j=k;break;
					}else{
						stk[top--];
					}
				}
			}
			now+=dfs(i,j);
		}
	}
	while(x--)res+=now;
	return res;
}
int main(){
	freopen("extract.in","r",stdin);
	freopen("extract.out","w",stdout); 
	scanf("%s",s+3);
	int n=strlen(s+3);n+=2;
	s[1]='[',s[2]='1',s[++n]=']';
	cout<<dfs(1,n)<<endl;
	return 0;	
}