#include using namespace std; double f(int x, double Q, double R, int remain, double p){ double a = (remain - x) * (Q - (1.0 - p) * R);// もみ消す double b = Q * ((1.0 - pow(p, x)) / (1.0 - p)); // クビになる(ゼロ除算に注意) return a + b; } int main(void){ int N, X, Y; cin >> N >> X >> Y; double P, Q, R; cin >> P >> Q >> R; double ans = -1.0; for (int t = 0; t <= N; t++) { int skill = X + t * Y; double p = 1.0 - 1.0 / skill; int remain = N - t; if (skill == 1) { // 必ず卵をかけてしまう場合 if (remain == 1) { ans = max(ans, P * t + Q); } else { ans = max(ans, P * t + (Q - R) * (remain - 1) + Q); } continue; } int left = 0, right = remain; while (3 <= right - left) { int cl = (left * 2 + right) / 3; int cr = (left + right * 2) / 3; double fcl = f(cl, Q, R, remain, p); double fcr = f(cr, Q, R, remain, p); if (fcl < fcr) { left = cl; } else { right = cr; } } for (int i = left; i <= right; i++) { ans = max(ans, P * t + f(i, Q, R, remain, p)); } } cout << fixed << setprecision(10) << ans << endl; }