#define _USE_MATH_DEFINES #include #include #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; const int RIGHT = 0; const int LEFT = 1; int main() { int n; double p, q; cin >> n >> p >> q; vector > dp(2, vector(n+2, 0.0)); dp[RIGHT][1] = 1.0; double ans = 0.0; for(int i=0; i<30000; ++i){ vector > nextDp(2, vector(n+2, 0.0)); for(int j=1; j<=n; ++j){ nextDp[LEFT][j-1] += dp[RIGHT][j] * p; nextDp[RIGHT][j+1] += dp[LEFT][j] * p; nextDp[RIGHT][j+1] += dp[RIGHT][j] * q; nextDp[LEFT][j-1] += dp[LEFT][j] * q; } dp = move(nextDp); ans += dp[LEFT][0]; } double rest = 0.0; for(int j=1; j<=n; ++j) rest += dp[RIGHT][j] + dp[LEFT][j]; ans /= 1.0 - rest; cout.setf(ios_base::fixed, ios_base::floatfield); cout << setprecision(10) << ans << endl; return 0; }