#include <bits/stdc++.h>
using namespace std;
int n, pp;
long double f[55][55], g[55][2], G[55][2], P, ans, a[205][205], b[205], s[205],
    c[205][205], X;
long double U(int n, int k) { return !n || n < k - 1 ? 0 : G[k][n != k - 1]; }
long double u(int n, int k) { return !n || n < k - 1 ? 0 : g[k][n != k - 1]; }
int main() {
  scanf("%d%d", &n, &pp);
  P = (long double)pp * 0.000000001;
  g[1][0] = g[1][1] = P;
  g[2][0] = 1 - P;
  g[2][1] = P * P + 1 - P;
  G[2][0] = 1 - P;
  G[2][1] = 1 - P;
  for (int i = 3; i <= 50; ++i) {
    g[i][0] = g[i - 1][1] * g[i - 1][0];
    g[i][1] = g[i - 1][1] * g[i - 1][1];
    G[i][0] = G[i - 1][1] * g[i - 1][0];
    G[i][1] = G[i - 1][1] * g[i - 1][1];
  }
  f[1][1] = 1;
  f[1][2] = 2;
  for (int i = 2; i < 50; ++i) {
    X = 0;
    for (int k = 2; k <= i; ++k)
      f[i][1] += f[i - 1][k] * U(i - 1, k) * (1 - u(i - 2, k)),
          X += U(i - 1, k) * (1 - u(i - 2, k));
    f[i][1] = f[i][1] / X + 1;
    for (int j = 2; j <= i + 1; ++j) {
      X = 0;
      for (int k = 1; k < j; ++k)
        f[i][j] += f[i - 1][k] * u(i - 1, k) * (1 - u(i - 2, k)),
            X += u(i - 1, k) * (1 - u(i - 2, k));
      f[i][j] = f[i][j] / X + j;
    }
  }
  if (n < 50) {
    for (int i = 1; i <= n + 1; ++i)
      ans += f[n][i] * u(n, i) * (1 - u(n - 1, i));
    printf("%.15Lf\n", ans);
    return 0;
  }
  a[51][51] = 1;
  X = 0;
  for (int i = 2; i <= 50; ++i) X += U(48, i) * (1 - u(47, i));
  for (int i = 2; i <= 50; ++i) a[i][1] = U(48, i) * (1 - u(47, i)) / X;
  a[51][1] = 1;
  for (int j = 2; j <= 50; ++j) {
    X = 0;
    for (int i = 1; i < j; ++i) X += u(48, i) * (1 - u(47, i));
    for (int i = 1; i < j; ++i) a[i][j] = u(48, i) * (1 - u(47, i)) / X;
    a[51][j] = j;
  }
  for (int i = 1; i <= 50; ++i) b[i] = f[49][i], b[51] = 1;
  for (n -= 49; n; n >>= 1) {
    if (n & 1) {
      for (int i = 1; i <= 51; ++i)
        for (int j = 1; j <= 51; ++j) s[j] += b[i] * a[i][j];
      for (int i = 1; i <= 51; ++i) b[i] = s[i], s[i] = 0;
    }
    for (int k = 1; k <= 51; ++k)
      for (int i = 1; i <= 51; ++i)
        for (int j = 1; j <= 51; ++j) c[i][j] += a[i][k] * a[k][j];
    for (int i = 1; i <= 51; ++i)
      for (int j = 1; j <= 51; ++j) a[i][j] = c[i][j], c[i][j] = 0;
  }
  for (int j = 1; j <= 50; ++j) ans += b[j] * u(48, j) * (1 - u(47, j));
  printf("%.15Lf\n", ans);
  return 0;
}
