No.53 悪の漸化式

No.53 悪の漸化式 - yukicoder

  • トリッキーな問題と書いてあったので、おそらく精度落ちかなーとおもってたら案の定。long double で試してもダメだった。
  • 高校レベルの漸化式を解いて一般項をだせばよい。一般項を計算しようとせずまず DP でやろうとするあたりはプログラマの弊害かも。(笑)
class EvilRecursion {
public:
    void solve(void) {
            int N;
            cin>>N;
            // 通常の DP でやると long double でも精度落ちして WA になる
            // 漸化式 4*An = 19*An-1 - 12*An-2 は実は一般項を計算できる
            //  特性方程式 4*x^2 - 19*x + 12 = 0 を解いて
            //  (4x-3)(x-4) = 0
            // An = a*(3/4)^n + b*4^n
            // 初項から a=4, b=0 がわかる
            cout<<setprecision(20)<<4*pow(3.0/4.0, N)<<endl;
    }
};