#include #define rep(i, n) for (int i = 0; i < int(n); i++) #define rrep(i, n) for (int i = int(n) - 1; i >= 0; i--) #define reps(i, n) for (int i = 1; i <= int(n); i++) #define rreps(i, n) for (int i = int(n); i >= 1; i--) #define repi(i, a, b) for (int i = (a); i < int(b); i++) #define all(a) (a).begin(), (a).end() #define bit(b) (1ull << (b)) using namespace std; using i32 = int; using i64 = long long; using f64 = double; using vi32 = vector; using vi64 = vector; using vf64 = vector; using vstr = vector; template void amax(T &x, S y) { if (x < y) x = y; } template void amin(T &x, S y) { if (y < x) x = y; } f64 dp[1000010]; void solve(int n, f64 p) { repi(i, 2, n + 1) { f64 c = pow(1 - p, dp[i]); dp[i] = dp[i - 1] * (1 - c) + (dp[i - 1] + 1) * c; for (int j = i * 2; j <= n; j += i) dp[j]++; } cout << dp[n] << endl; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(16); int n; f64 p; cin >> n >> p; solve(n, p); return 0; }