import java.util.Locale;

public class Euler286 {
    static double exactScoreProbability(int shots, int targetScore, double q) {
        double[] dp = new double[64];
        dp[0] = 1.0;
        for (int x = 1; x <= shots; ++x) {
            double hit = 1.0 - (double) x / q;
            double miss = 1.0 - hit;
            for (int s = x; s >= 1; --s) {
                dp[s] = dp[s] * miss + dp[s - 1] * hit;
            }
            dp[0] *= miss;
        }
        return dp[targetScore];
    }

    public static String solve() {
        int shots = 50;
        int targetScore = 20;
        double targetProbability = 0.02;

        double low = 50.0;
        double high = 100.0;
        while (exactScoreProbability(shots, targetScore, high) > targetProbability) {
            high *= 2.0;
        }

        for (int it = 0; it < 220; ++it) {
            double mid = (low + high) / 2.0;
            if (exactScoreProbability(shots, targetScore, mid) > targetProbability) {
                low = mid;
            } else {
                high = mid;
            }
        }

        return String.format(Locale.US, "%.10f", (low + high) / 2.0);
    }

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