#include <bits/stdc++.h>
using namespace std;
const int N = 50;
struct matrix {
  double m[N + 5][N + 5];
  friend matrix operator*(const matrix &A, const matrix &B) {
    matrix C;
    for (int i = 0; i < N; i++)
      for (int j = 0; j < N; j++) C.m[i][j] = 0;
    for (int i = 0; i < N; i++)
      for (int k = 0; k < N; k++)
        for (int j = 0; j < N; j++) C.m[i][j] += A.m[i][k] * B.m[k][j];
    return C;
  }
} M;
matrix mpow(matrix A, int p) {
  matrix R;
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++) R.m[i][j] = (i == j);
  for (; p; p >>= 1, A = A * A)
    if (p & 1) R = R * A;
  return R;
}
int n;
double p;
double t[N + 5][N + 5], t2[N + 5][N + 5];
double s[N + 5][N + 5], s2[N + 5][N + 5];
double f[N + 5][N + 5];
void init() {
  t[1][1] = p, t[1][2] = 1 - p;
  for (int i = 2; i < N; i++) {
    t[i][1] = p, t[i][2] = (1 - p) + p * p, t2[i][2] = 1;
    for (int j = 3; j < N; j++)
      t[i][j] = t[i][j - 1] * t[i - 1][j - 1],
      t2[i][j] = t2[i][j - 1] * t[i - 1][j - 1];
  }
  for (int i = 1; i < N; i++)
    for (int j = 1; j < N; j++)
      s[i][j] = t[i][j] * (1 - t[i - 1][j]),
      s2[i][j] = t2[i][j] * (1 - t[i - 1][j]);
  s2[1][2] = 1;
  double sum = 0;
  for (int i = 1; i < N; i++) sum += s2[N - 1][i];
  for (int i = 1; i < N; i++) M.m[1][i] = s2[N - 1][i] / sum;
  sum = 0;
  for (int i = 2; i < N; i++) {
    sum += s[N - 1][i - 1];
    for (int j = 1; j < i; j++) M.m[i][j] = s[N - 1][j] / sum;
  }
  for (int i = 1; i < N; i++) M.m[i][0] = i;
  M.m[0][0] = 1;
  f[1][1] = 1, f[1][2] = 2;
  for (int i = 2; i < N; i++) {
    sum = 0;
    f[i][1] = 1;
    for (int j = 1; j < N; j++) sum += s2[i - 1][j];
    for (int j = 1; j < N; j++) f[i][1] += f[i - 1][j] * s2[i - 1][j] / sum;
    sum = 0;
    for (int j = 2; j < N; j++) {
      f[i][j] = j, sum += s[i - 1][j - 1];
      for (int k = 1; k < j; k++) f[i][j] += f[i - 1][k] * s[i - 1][k] / sum;
    }
  }
  f[N - 1][0] = 1;
}
int main() {
  scanf("%d%lf", &n, &p), p /= 1E9, init();
  double ans = 0;
  if (n >= N) {
    M = mpow(M, n - N + 1);
    for (int i = 0; i < N; i++)
      for (int j = 0; j < N; j++) ans += M.m[i][j] * f[N - 1][j] * s[N - 1][i];
  } else
    for (int i = 1; i < N; i++) ans += s[n][i] * f[n][i];
  printf("%.9f\n", ans);
}
