public class Euler841 {
    static double areaA(int p, int q) {
        double dp = (double) p;
        double delta = Math.PI / dp;
        double sd = Math.sin(delta);
        double cd = Math.cos(delta);
        double tanDelta = sd / cd;

        double sumDiff = 0.0;
        if (q >= 2) {
            int k = 2;
            double sinK = sd;
            double cosK = cd;
            double sign = 1.0;
            double corr = 0.0;

            while (k <= q) {
                double sinNext = sinK * cd + cosK * sd;
                double cosNext = cosK * cd - sinK * sd;
                double diff = sd / (cosK * cosNext);
                double term = sign * diff;

                double y = term - corr;
                double t = sumDiff + y;
                corr = (t - sumDiff) - y;
                sumDiff = t;

                sinK = sinNext;
                cosK = cosNext;
                sign = -sign;
                k++;
            }
        }

        double inner = sumDiff - tanDelta;
        double outsideSign = ((q % 2) == 0) ? 1.0 : -1.0;
        return dp * outsideSign * inner;
    }

    static long[] fibonacciSequence(int count) {
        long[] fibs = new long[count];
        fibs[0] = 1;
        fibs[1] = 1;
        for (int i = 2; i < count; ++i) {
            fibs[i] = fibs[i - 1] + fibs[i - 2];
        }
        return fibs;
    }

    public static String solve() {
        long[] fibs = fibonacciSequence(36);
        double sum = 0.0;
        double corr = 0.0;

        for (int n = 3; n <= 34; ++n) {
            int p = (int) fibs[n];
            int q = (int) fibs[n - 2];
            double term = areaA(p, q);
            double y = term - corr;
            double t = sum + y;
            corr = (t - sum) - y;
            sum = t;
        }

        sum = Math.round(sum * 1e10) / 1e10;
        return String.format(java.util.Locale.US, "%.10f", sum);
    }

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