P1310 表达式的值50分
蒟蒻求大佬帮忙
这是代码
#include<iostream>
#include<cstdio>
#include<stack>
#define p 10007
using namespace std;
int n;string s;
stack <int> st0,st1;
stack <char> st;
void solve(){
int a0=st0.top(),a1=st1.top();
st0.pop();st1.pop();
int b0=st0.top(),b1=st1.top();
st0.pop();st1.pop();
char c=st.top();st.pop();
if (c=='+')
st0.push(a0*b0%p),
st1.push((a0*b1+a1*b0+a1*b1)%p);
if (c=='*')
st0.push((a0*b0+a0*b1+a1*b0)%p),
st1.push(a1*b1%p);
}
int main(){
cin>>n>>s;
s='('+s+')';
for (int i=0;i<s.size();i++){
if (s[i]==')' || s[i]=='+')
while (st.top()!='(') solve();
if (s[i]=='*')
while (st.top()=='*') solve();
if (s[i]!=')') st.push(s[i]);
if (s[i+1]!='(' && s[i]!=')') st0.push(1),st1.push(1);
}
printf("%d",st0.top()%p);
return 0;
}