#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int BUF = 1000005;


int nPrime;
int prime[BUF];

void makePrime() {
    bool isPrime[BUF];
    for (int i = 0; i < BUF; ++i)
        isPrime[i] = true;

    for (int i = 2; i * i < BUF; ++i)
        if (isPrime[i])
            for (int j = i * 2; j < BUF; j += i)
                isPrime[j] = false;

    nPrime = 0;
    for (int i = 2; i < BUF; ++i)
        if (isPrime[i])
            prime[nPrime++] = i;
}


int N;
double p;

void read() {
    cin >> N >> p;
}


int calcNumDivisor(int n) {
    int nDivisor = 1;
    for (int i = 0; prime[i] * prime[i] <= n; ++i) {
        if (n % prime[i] == 0) {
            int cnt = 0;
            while (n % prime[i] == 0) {
                n /= prime[i];
                ++cnt;
            }
            nDivisor *= cnt + 1;
        }
    }
    if (n > 1)
        nDivisor *= 2;
    return nDivisor;
}


void work() {
    double sum = 0;

    for (int i = 2; i <= N; ++i) {
        int nDivisor = calcNumDivisor(i);
        sum += pow(1 - p, nDivisor - 2);
    }
    
    printf("%.10lf\n", sum);
}


int main() {
    makePrime();
    read();
    work();
    return 0;
}