import java.util.Locale;

public class Euler307 {

    static double solve(int defects, int chips) {
        if (defects <= 2) {
            return 0.0;
        }

        double answer = 1.0;

        double logp = 0.0;
        for (int j = 0; j < defects; j++) {
            logp += Math.log(1.0 - (double) j / (double) chips);
        }

        answer -= Math.exp(logp);

        for (int i = 1; i <= defects / 2; i++) {
            double numTerm1 = (double) (defects - 2 * (i - 1)) * (double) (defects - 1 - 2 * (i - 1));
            double denTerm1 = 2.0 * (double) chips * (double) i;

            int term2j = defects - i;
            double term2Val = 1.0 - (double) term2j / (double) chips;

            logp += Math.log(numTerm1 / denTerm1) - Math.log(term2Val);

            answer -= Math.exp(logp);
        }

        return answer;
    }

    public static void main(String[] args) {
        System.out.printf(Locale.US, "%.10f\n", solve(20000, 1000000));
    }
}
