Image Description
hotman78
  • 2021-12-21

【競技プログラミング】形式的冪級数(多項式)を係数倍するテク

はじめに

twitter.com
twitter.com favicon https://twitter.com/hotmanww/status/1309050292277784577

これが解けるようになります。

形式的冪級数(多項式)を係数倍するテク

n=01n!zn=ez\sum_{n=0}^{\infty}\frac{1}{n!}z^n=e^zと言うのは有名な式ですよね
ではn=0nan!zn\sum_{n=0}^{\infty}\frac{n^a}{n!}z^nは何でしょうかと言うのが今回の議題です。
これがわかればzzbbを代入することで答えを求めることが出来ます。

結論:微分して z 倍する。

dzndz×z=nzn\frac{dz^n}{dz}\times z=nz^nなので、うまくいきます。
これをオイラー作用素等と呼ばれたりもするようです。
今回の場合、
n=0nan!zn\sum_{n=0}^{\infty}\frac{n^a}{n!}z^n
a=0a=0の時eze^z
a=1a=1の時(ez)×z(e^z)'\times z=(z2+z)ez(z^2+z)e^z
a=2a=2の時((z2+z)ez)×z=(z3+3z2+z)ez((z^2+z)e^z)'\times z=(z^3+3z^2+z)e^z
と続いて行きます
この漸化式を整理するとfi+1(z)=fi(z)+fi(z)f_{i+1}(z)=f_i(z)+f_i'(z)のような式になって、
S(n+1,k)=kS(n,k)+S(n,k1)S(n+1,k)=kS(n,k)+S(n,k-1)のような式になって、
これが第二種スターリング数だとわかります。
あとはFFT (NTT) 関連 -memo(いつもお世話になっております)
で出来ます。

おまけ

(xd/dx)kf(x)(xd/dx)^kf(x)はどうなるのでしょうか
k=0k=0の時f(x)f(x)
k=1k=1の時xf(x)xf'(x)
k=2k=2の時xf(x)+x2f(x)xf'(x)+x^2f''(x)
k=2k=2の時xf(x)+3x2f(x)+x3f(x)xf'(x)+3x^2f''(x)+x^3f'''(x)
より第二種スターリング数を用いて
t=0kS(k,t)xtf(t)(x)\sum_{t=0}^kS(k,t)x^tf^{(t)}(x)と表せます。(数学的帰納法で証明できます。) #練習問題
sum_of_exponential_times_polynomial_limit
sum_of_exponential_times_polynomial

ヒント 式を求めずとも形がわかればラグランジュ補間が出来ます

参考

min-25.hatenablog.com
min-25.hatenablog.com favicon https://min-25.hatenablog.com/entry/2019/10/08/214743
;