// yukicoder: No.144 エラトステネスのざる // 2019.7.11 bal4u #include #include #define EQ(a, b) (fabs((a)-(b)) < 1e-8) double p; int f[1000005]; double memo[300]; char sw[300]; int main() { int i, j, n, N; double p, ans; scanf("%d%lf", &N, &p); n = N >> 1, p = 1-p; for (i = 2; i <= n; i++) for (j = i << 1; j <= N; j += i) f[j]++; if (EQ(p, 1)) ans = N-1; else if (EQ(p, 0)) while (N > 1) ans += (f[N--] == 0); else { ans = 0; while (N > 1) { n = f[N]; if (!sw[n]) memo[n] = pow(p, n), sw[n] = 1; ans += memo[n]; N--; } } printf("%.10lf\n", ans); return 0; }