#include <bits/stdc++.h>
using namespace std;
int n, p;
double p1, p2, a[100005][55], b[100005][55], dp[100050][55];
void init() {
  for (int i = 1; i <= 100000; i++) {
    for (int j = 1; j <= 50; j++) {
      if (j == 1)
        a[i][j] = p1;
      else if (j == 2)
        a[i][j] = p1 * p1 * (i > 1) + p2;
      else
        a[i][j] = a[i][j - 1] * a[i - 1][j - 1];
    }
  }
  for (int i = 1; i <= 100000; i++) {
    for (int j = 2; j <= 50; j++) {
      if (j == 2)
        b[i][j] = p2;
      else
        b[i][j] = b[i][j - 1] * a[i - 1][j - 1];
    }
  }
}
void solve() {
  int m = n;
  n = min(n, 1000);
  for (int i = 0; i <= 50; i++) dp[n][i] = i;
  for (int i = n - 1; i >= 1; i--)
    for (int j = 1; j <= 50; j++) {
      double t1 = 0, t2 = 0;
      if (j == 1) {
        for (int k = 2; k <= 50; k++) {
          t1 += dp[i + 1][k] * b[n - i][k] * (1 - a[n - i - 1][k]);
          t2 += b[n - i][k] * (1 - a[n - i - 1][k]);
        }
      } else {
        for (int k = 1; k <= j - 1; k++) {
          t1 += dp[i + 1][k] * a[n - i][k] * (1 - a[n - i - 1][k]);
          t2 += a[n - i][k] * (1 - a[n - i - 1][k]);
        }
      }
      if (t2 == 0)
        dp[i][j] = 0;
      else
        dp[i][j] = j + t1 / t2;
    }
  double ans = 0;
  m -= n;
  for (int k = 1; k <= 50; k++) {
    double tmp = dp[1][k] + (dp[1][k] - dp[2][k]) * m;
    ans += tmp * a[n][k] * (1 - a[n - 1][k]);
  }
  printf("%.15lf\n", ans);
}
int main() {
  scanf("%d%d", &n, &p);
  p1 = p / 1e9, p2 = 1 - p1;
  init();
  solve();
  return 0;
}
