SRM 152 DIV2 Level One - 不動点

くそぅ。問題が全然わかんねぇ。


f(x) = R * x * (1 - x)のRが与えられるのでxを0.25から始めて、不動点を求めていく。200000回不動点を求めてみて、そこから更に1000回求めてみて、最大値と最小値の差がいくつになるかを答える。

と、ここまで辿りつくまでが長い・・・くそう、英語が出来ないって辛過ぎ。


回答はそのまま実装すればいい。

#include <algorithm>

class FixedPointTheorem
{
public:
    static double cycleRange(double R)
    {
        double x = 0.25;
        double max, min;

        for (int i = 0; i < 200000; i++)
            x = R * x * (1 - x);

        max = min = x;

        for (int i = 0; i < 1000; i++) {
            x = R * x * (1 - x);
            max = std::max(x, max);
            min = std::min(x, min);
        }

        return max - min;
    }
};