注意数字为多位数的情况
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <stack>
using namespace std;
const int inf=0x3f3f3f3f;
int main(){
string str;
cin>>str;
vector<char> sc;
stack<int> sn;
int flag=0;
for(int i=0;i<str.size();i++){
if(str[i]=='('){
flag=1;
continue;
}
if(str[i]==')'){
flag=0;
continue;
}
if(str[i]>='0'&&str[i]<='9')
sn.push(str[i]-'0');
if(str[i]>='a'&&str[i]<='z'||i==str.size()-1){
if(flag||(str[i+1]>='0'&&str[i+1]<='9')){//有左括号
sc.push_back(str[i]);
continue;
}
int num=0,k=0;
if(!sn.empty()){
while(!sn.empty()){
num+=sn.top()*pow(10,k);
k++;
sn.pop();
}
for(int i=0;i<num;i++)
for(int j=0;j<sc.size();j++)
printf("%c",sc[j]);
sc.clear();
}
if(str[i]>='a'&&str[i]<='z') printf("%c",str[i]);
}
}
return 0;
}