public class Euler863 {

    static double RValue(int n) {
        int[] t5Nxt = new int[n];
        double[] t5P = new double[n];
        int[] t6Nxt = new int[n];
        double[] t6P = new double[n];

        for (int r = 1; r < n; ++r) {
            int m5 = 5 * r;
            int n5 = m5 % n;
            t5Nxt[r] = n5;
            t5P[r] = (double) n5 / m5;

            int m6 = 6 * r;
            int n6 = m6 % n;
            t6Nxt[r] = n6;
            t6P[r] = (double) n6 / m6;
        }

        double[] v = new double[n];
        double[] nv = new double[n];

        for (int iter = 0; iter < 2000; ++iter) {
            double diff = 0.0;
            for (int r = 1; r < n; ++r) {
                double c5 = 1.0 + t5P[r] * v[t5Nxt[r]];
                double c6 = 1.0 + t6P[r] * v[t6Nxt[r]];
                nv[r] = Math.min(c5, c6);
                double d = Math.abs(nv[r] - v[r]);
                if (d > diff)
                    diff = d;
            }

            double[] temp = v;
            v = nv;
            nv = temp;

            if (diff < 1e-18)
                break;
        }

        return v[1];
    }

    public static String solve() {
        double s = 0.0;
        for (int k = 2; k <= 1000; ++k) {
            s += RValue(k);
        }
        return String.format(java.util.Locale.US, "%.6f", s);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
