#include #include #include #include #include #include #include #include #include #include #include using ll = long long; using namespace std; int divisor(int n) { int ret = 0; for (int i = 1; i * i <= n; i++) { if (n % i == 0) { ret++; if (i*i != n) ret++; } } return (ret - 2); } int main(){ int n; double p; cin >> n >> p; vector prime(n+1, 1); vector yprime(n+1); prime[0] = 0, prime[1] = 0; for (int i = 2; i*i <= n; i++){ if (prime[i]){ for (int j = i*i; j <= n; j += i){ prime[j] = 0; } } } for (int i = 2; i <= n; i++){ int ex = 0; double tmp = 1.0; int fac = divisor(i); if (prime[i]) yprime[i] = yprime[i-1] + 1.0; else { yprime[i] = yprime[i-1] + pow(1-p, fac); } } cout << fixed << setprecision(7) << yprime[n] << endl; }