/** * author: otera **/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long double ld; typedef string::const_iterator State; class ParseError {}; ld p, q, r; string s; ld expr(State &begin); ld term(State &begin); ld factor(State &begin); ld expr(State &begin) { ld r1 = term(begin); while(begin != s.end() and *begin == 'o') { begin += 2; ld r2 = factor(begin); ld y = 1 - (1 - r1) * (1 - r2); r1 = (1 - r) * y + r * (1 - y); } return r1; } ld term(State &begin) { ld r1 = factor(begin); while(begin != s.end() and *begin == 'a') { begin += 3; ld r2 = factor(begin); ld y = r1 * r2; r1 = (1 - r) * y + r * (1 - y); } return r1; } ld factor(State &begin) { if(*begin == 'Y') { begin += 3; return 1.0; } if(*begin == 'N') { begin += 2; return 0.0; } if(*begin == '(') { ++ begin; ld ret = expr(begin); ++ begin; return ret; } if(*begin == 'r') { begin += 7; ld r1 = expr(begin); ld r2 = expr(begin); ld t = r1 * r2; return t * p + (1 - t) * q; ++ begin; } assert(0); } int main() { int n; cin >> p >> q >> r; getline(cin, s); State begin = s.begin(); ld ret = expr(begin); cout << ceil(100 * ret) << endl; }