import java.math.BigInteger;

public class Euler523 {

    static BigInteger gcd(BigInteger a, BigInteger b) {
        return a.gcd(b);
    }

    static BigInteger lcm(BigInteger a, BigInteger b) {
        if (a.signum() == 0 || b.signum() == 0)
            return BigInteger.ZERO;
        return a.divide(gcd(a, b)).multiply(b);
    }

    public static void main(String[] args) {
        int N = 30;
        BigInteger D = BigInteger.ONE;
        for (int i = 1; i <= N; i++) {
            D = lcm(D, BigInteger.valueOf(i));
        }

        BigInteger[] scaledE = new BigInteger[N + 1];
        scaledE[0] = BigInteger.ZERO;

        BigInteger prefix = BigInteger.ZERO;

        for (int n = 1; n <= N; n++) {
            long twoPowN = (n < 63) ? (1L << n) : 0L;
            long c = twoPowN - n - 1;

            BigInteger cBig = BigInteger.valueOf(c);
            BigInteger numerator = prefix.add(cBig.multiply(D));

            scaledE[n] = numerator.divide(BigInteger.valueOf(n));
            prefix = prefix.add(scaledE[n]);
        }

        BigInteger num100 = scaledE[30].multiply(BigInteger.valueOf(100));
        BigInteger[] divRem = num100.divideAndRemainder(D);
        BigInteger q = divRem[0];
        BigInteger rem = divRem[1];

        if (rem.multiply(BigInteger.TWO).compareTo(D) >= 0) {
            q = q.add(BigInteger.ONE);
        }

        long q64 = q.longValue();
        long integer = q64 / 100;
        long frac = q64 % 100;

        System.out.printf("%d.%02d\n", integer, frac);
    }
}
