import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;

public class Euler848 {
    static BigInteger aValue(long m, long n) {
        BigInteger out = BigInteger.ZERO;
        if (n >= 1)
            out = out.add(BigInteger.valueOf(Math.min(m, 1)));
        if (n >= 2)
            out = out.add(BigInteger.valueOf(Math.min(m, 2)));
        if (n < 3)
            return out;

        out = out.add(BigInteger.valueOf(Math.min(m, 3)));
        long idx = 4;
        long cnt = 3;
        long val = 6;

        while (idx <= n) {
            long take = Math.min(cnt, n - idx + 1);
            long minVal = Math.min(m, val);
            out = out.add(BigInteger.valueOf(take).multiply(BigInteger.valueOf(minVal)));
            idx += take;

            if (cnt > Long.MAX_VALUE / 2)
                break;
            cnt <<= 1;
            if (val > Long.MAX_VALUE / 2)
                break;
            val <<= 1;
        }
        return out;
    }

    static BigDecimal pValue(long m, long n) {
        BigInteger a = aValue(m, n);
        BigInteger den = BigInteger.valueOf(m).multiply(BigInteger.valueOf(n));
        MathContext mc = new MathContext(50);
        return new BigDecimal(a).divide(new BigDecimal(den), mc);
    }

    public static String solve() {
        long[] p7 = new long[21];
        long[] p5 = new long[21];
        p7[0] = 1;
        p5[0] = 1;
        for (int i = 1; i <= 20; ++i) {
            p7[i] = p7[i - 1] * 7L;
            p5[i] = p5[i - 1] * 5L;
        }

        BigDecimal ans = BigDecimal.ZERO;
        for (int i = 0; i <= 20; ++i) {
            for (int j = 0; j <= 20; ++j) {
                ans = ans.add(pValue(p7[i], p5[j]));
            }
        }

        return String.format(java.util.Locale.US, "%.8f", ans.doubleValue());
    }

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