#include #include #include #include #include #define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,m,n) for(int i=(m);i<(n);++i) #define REP(i,n) FOR(i,0,n) #define ALL(v) (v).begin(),(v).end() const int INF = 0x3f3f3f3f; const long long LINF = 0x3f3f3f3f3f3f3f3fLL; const double EPS = 1e-8; const int MOD = 1000000007; // 998244353; const int dy[] = {1, 0, -1, 0}, dx[] = {0, -1, 0, 1}; /*-------------------------------------------------*/ int n; double ans = 0, p, q; double border[10001]; void border_init() { border[1] = 1; FOR(i, 2, 10001) { border[i] = border[i - 1] * q; } } void calc(int pos, bool right, double now) { if (now * border[pos] < 1e-11) return; if (right) { if (pos == 1) { ans += now * p; calc(pos + 1, true, now * q); } else if (pos == n) { calc(pos - 1, false, now * p); } else { calc(pos - 1, false, now * p); calc(pos + 1, true, now * q); } } else { if (pos == 1) { ans += now * q; calc(pos + 1, true, now * p); } else if (pos == n) { calc(pos - 1, false, now * q); } else { calc(pos - 1, false, now * q); calc(pos + 1, true, now * p); } } } int main() { // freopen("input.txt", "r", stdin); cin >> n >> p >> q; border_init(); calc(1, true, 1); printf("%.5f\n", ans); return 0; }