H - Quantum Multiplication Editorial by hitoare
議論の都合上、数列\(X\)の順序を反転したものを考えることにします。 この時、良い数列\(X=(X_1,X_2,...,X_n)\)のスコアは \(X_i-X_{i+1}=1\)となる全ての\(i\)に対して\(X_i\)をかけたものになります。
\(a_{i,j}\)を長さが\(i\)、初項が\(B\)で末項が\(j\)の良い数列全てに対するスコアの総和とし、
\[f_i(x) = \sum_{j=0}^{\infty}a_{i,j}x^j\]
とします。
この時
\[ \left\{ \begin{array}{ll} f_1(x) = x^B \\ f_{i+1}(x) = xf_i(x)+\frac{d}{dx}f_i(x) &(i \geq 1) \end{array} \right. \]
が成り立ちます。
(下の式の右辺について、1項目は\(X_{i+1}=X_i+1\)、2項目は\(X_{i+1}=X_i-1\)となるものにそれぞれ対応します。)
ここで\(g_i(x) = f_i(x)e^{\frac{x^2}{2}}\)とおくと、
\[g_1(x)=x^Be^{\frac{x^2}{2}}\]
かつ
\[ \begin{array}{ll} \frac{d}{dx}g_i(x) &= \frac{d}{dx}(f_i(x)e^{\frac{x^2}{2}}) \\ &= (\frac{d}{dx}f_i(x))e^{\frac{x^2}{2}}+f_i(x)(xe^\frac{x^2}{2}) \\ &= (\frac{d}{dx}f_i(x)+xf_i(x))e^{\frac{x^2}{2}} \\ &= f_{i+1}(x)e^{\frac{x^2}{2}} \\ &= g_{i+1}(x) \end{array} \]
が成り立つので、
\[ g_i(x)=\left(\frac{d}{dx}\right)^{i-1} \left( x^Be^{\frac{x^2}{2}} \right) \]
です。したがって
\[ f_i(x) =e^{-\frac{x^2}{2}} \left(\frac{d}{dx}\right)^{i-1} \left( x^Be^{\frac{x^2}{2}} \right) \]
となり、求める答えは
\[ a_{N,A} = [x^{A}] \left(e^{-\frac{x^2}{2}} \left(\frac{d}{dx}\right)^{N-1} \left( x^Be^{\frac{x^2}{2}} \right) \right) \]
となります。 これは階乗とその逆元、2の逆元の累乗を前計算しておくと\(O(\max(N,A,B))\)時間で計算可能です。
posted:
last update: