模拟
简单模拟,做出来就模掉。
划水
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 1000
#define MOD 1000000007
int t;
char s[MAXN+5];
using namespace std;
int main(){
scanf("%d",&t);
while (t--){
memset(s,0,sizeof(s));
scanf("%s",s);
int n=strlen(s);
long long x=0,y=0,wei=0,sum=0;
bool f=false,fl=false;
for (int i=0;i<n;i++){
if (s[i]=='('){
f=true;
continue;
}
if (s[i]=='#'){
fl=true;
continue;
}
if (s[i]==')'){
if (!fl)
continue;
for (int j=1;j<=y;j++){
for (int k=1;k<=wei;k++)
sum=(sum*10)%MOD;
sum=(sum+x)%MOD;
}
wei=0;
fl=false;
f=false;
x=0;
y=0;
continue;
}
if (s[i]>='0'&&s[i]<='9'){
if (f&&!fl){
x=(x*10+s[i]-'0')%MOD;
wei++;
continue;
}
if (f&&fl){
y=(y*10+s[i]-'0')%MOD;
continue;
}
if (!f){
sum=((sum*10)+s[i]-'0')%MOD;
continue;
}
}
}
printf("%lld\n",sum);
}
return 0;
}