問題概要
、が与えられたとき、
を高速に求めたい。普通に計算するとの計算量となるが、これをに高速化することを目指す。
問題の詳細は以下を参照 atcoder.jp
フーリエ変換
ある次多項式があったとして、この多項式の個のに対する値がわかれば係数が決定できるはずである。適当にを選んでしまうととの間の関係式は単純にならないが、1の乗根を選ぶと直行性により綺麗な関係になるということである。
と定義すると
が成立する。
証明
より、
よって、の異なるこの点で関数の値が一致することが示されたので、この変換の妥当性が示された。
関数の値の効率の良い求め方。
は次式なので、のこの値について
を普通に計算しようとするとの計算量となる。これを効率よく計算するため部分問題に分割する。の項を偶数部分と奇数部分に分割すると、それぞれの次数になるので、
したがって、元の定義と見比べれば
と表されることがわかる。
計算量の評価
について、]を求めるのにかかる計算量をとする。上で説明した解法により、サイズが半分になった問題を2つ解き、それをについて足し合わせればよいので
という漸化式が成立する。ここから