public class Euler610 {
    static int romanValue(char c) {
        switch (c) {
            case 'I':
                return 1;
            case 'V':
                return 5;
            case 'X':
                return 10;
            case 'L':
                return 50;
            case 'C':
                return 100;
            case 'D':
                return 500;
            case 'M':
                return 1000;
            default:
                return 0;
        }
    }

    static int romanToInt(String s) {
        int total = 0;
        for (int i = 0; i < s.length(); i++) {
            int v = romanValue(s.charAt(i));
            if (i + 1 < s.length() && romanValue(s.charAt(i + 1)) > v) {
                total -= v;
            } else {
                total += v;
            }
        }
        return total;
    }

    static String intToMinimalRoman(int value) {
        if (value <= 0)
            return "";
        int[] vals = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
        String[] toks = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
        StringBuilder out = new StringBuilder();
        for (int i = 0; i < vals.length; i++) {
            while (value >= vals[i]) {
                out.append(toks[i]);
                value -= vals[i];
            }
        }
        return out.toString();
    }

    public static String solve() {
        double pStop = 0.02;
        double pLetter = 0.14;
        char[] letters = { 'I', 'V', 'X', 'L', 'C', 'D', 'M' };

        String[] minr = new String[1000];
        for (int v = 0; v <= 999; v++) {
            minr[v] = intToMinimalRoman(v);
        }

        int[][] nxt = new int[1000][7];
        for (int r = 1; r <= 999; r++) {
            String s = minr[r];
            for (int i = 0; i < 7; i++) {
                String cand = s + letters[i];
                int v = romanToInt(cand);
                if (v > 0 && v <= 999 && minr[v].equals(cand)) {
                    nxt[r][i] = v;
                } else {
                    nxt[r][i] = r;
                }
            }
        }

        double[] E = new double[1000];
        for (int r = 999; r >= 1; r--) {
            int rejected = 0;
            double sumNext = 0.0;
            for (int i = 0; i < 7; i++) {
                int v = nxt[r][i];
                if (v == r)
                    rejected++;
                else
                    sumNext += E[v];
            }
            double denom = 1.0 - pLetter * rejected;
            E[r] = (pStop * r + pLetter * sumNext) / denom;
        }

        double sOther = E[1] + E[5] + E[10] + E[50] + E[100] + E[500];
        double E0 = (140.0 + 0.14 * sOther) / 0.86;

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

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