#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, X, Y; cin >> N; cin >> X >> Y; double P, Q, R; cin >> P >> Q >> R; // dp[i][j]: 残り i 日、研修を j 回した状態の最大期待値 // j は最大で i 回まで vector> dp(N + 1, vector(N + 1, 0.0)); for (int i = 1; i <= N; i++) { for (int j = 0; j <= N; j++) { // 1. 研修を受ける if (j + 1 <= N) { dp[i][j] = max(dp[i][j], P + dp[i - 1][j + 1]); } // 現在の実力 double skill = X + 1.0 * j * Y; // 2. 通常業務:もみ消さない (クビ) { double prob_fail = 1.0 / skill; double prob_success = 1.0 - prob_fail; // クビになったら dp[i-1][j] は加算できない double val = Q + prob_success * dp[i - 1][j]; dp[i][j] = max(dp[i][j], val); } // 3. 通常業務:もみ消す { double prob_fail = 1.0 / skill; double val = Q + dp[i - 1][j] - prob_fail * R; dp[i][j] = max(dp[i][j], val); } } } cout << fixed << setprecision(10) << dp[N][0] << "\n"; return 0; }