#include<iostream>
using namespace std;
typedef long long ll;
ll n;
string s;
struct node
{
char c='#';
ll dp0=1,dp1=1;
void set(char c,ll dp0,ll dp1)
{
this->c=c;
this->dp0=dp0;
this->dp1=dp1;
}
} a[100005];
ll top,dp0,dp1,tmp0,tmp1;
int main()
{
cin>>n>>s;
dp0=dp1=1;
for(int i=0;i<n;i++)
if(s[i]=='(')
a[++top].set('(',0,0);
else if(s[i]==')')
{
while(a[top].c!='('&&top>=1)
{
if(a[top].c=='+')
{
tmp0=dp0*a[top].dp0;
tmp1=dp0*a[top].dp1+dp1*a[top].dp0+dp1*a[top].dp1;
}
else if(a[top].c=='*')
{
tmp0=dp0*a[top].dp0+dp0*a[top].dp1+dp1*a[top].dp0;
tmp1=dp1*a[top].dp1;
}
else
break;
dp0=tmp0%10007;
dp1=tmp1%10007;
top--;
}
top--;//弹掉左括号
}
else if(s[i]=='+')
{
while(a[top].c!='('&&a[top].c!='+'&&top>=1)
{
if(a[top].c=='*')
{
tmp0=dp0*a[top].dp0+dp0*a[top].dp1+dp1*a[top].dp0;
tmp1=dp1*a[top].dp1;
}
else
break;
dp0=tmp0%10007;
dp1=tmp1%10007;
top--;
}
if(a[top].c=='(') top--;
a[++top].set('+',dp0,dp1);
dp0=1;
dp1=1;
}
else if(s[i]=='*')
{
a[++top].set('*',dp0,dp1);
dp0=1;
dp1=1;
}
while(top>=0)
{
if(a[top].c=='+')
{
tmp0=dp0*a[top].dp0;
tmp1=dp0*a[top].dp1+dp1*a[top].dp0+dp1*a[top].dp1;
}
else if(a[top].c=='*')
{
tmp0=dp0*a[top].dp0+dp0*a[top].dp1+dp1*a[top].dp0;
tmp1=dp1*a[top].dp1;
}
else
break;
dp0=tmp0%10007;
dp1=tmp1%10007;
top--;
}
cout<<dp1;
return 0;
}
2个RE,8个WA
不能说五错缤纷,因为五错是WA,TLE,MLE,R(T)E,C(P)E