$\left(\prod_{k=0}^{m-1} f(r^k x)\right) \bmod x^N$
(library/polynomial/prod_f(r^k_x).hpp)
$\left(\prod_{k=0}^{m-1} f(r^k x)\right) \bmod x^N$
$\displaystyle F(x) := \prod_{k=0}^{m-1} f(r^k x)$ とする。形式的冪級数 $f$ の $i$ 次の係数を $f_i$ と書く。
$f(x)=0$ の場合は自明なので、$f(x)\neq 0$ を仮定する。また、$f _ 0=1$ と仮定する。
$f _ 0\neq 1$ の場合は $f = c\cdot x ^ a\cdot f’\; (f’ _ 0 = 1)$ とすれば、次のようにして定数項が $1$ のケースに帰着できる。
\[F(x)=c ^ m r ^ {\frac{m(m-1)}{2}a} x ^ {\frac{m(m-1)}{2}} \prod _ {k = 0} ^ {m - 1} f'(r ^ k x).\]
$g=\log f$ とおくと、$F = \exp (\log F)$ を用いることで、$F \bmod x ^ N$ を $O(N \log N)$ 時間で計算できる。
\[\begin{aligned}
\log F
&= \sum _ {k = 0} ^ {m - 1} \log f(r ^ k x) \newline
&= \sum _ {k = 0} ^ {m - 1} g(r ^ k x) \newline
&= \sum _ {i = 0} ^ {\infty} g _ i x ^ i\sum _ {k = 0} ^ {m - 1} (r ^ i) ^ k \newline
&= \sum _ {i = 0} ^ {\infty} g _ i x ^ i \cdot \begin{cases}
\displaystyle m \cdot x ^ i & \text {if}\quad r ^ i = 1 \newline
\displaystyle \dfrac{(r ^ m) ^ i - 1}{r ^ i - 1} & \text{otherwise}
\end{cases}.
\end{aligned}\]
参考
- https://maspypy.com/%E5%A4%9A%E9%A0%85%E5%BC%8F%E3%83%BB%E5%BD%A2%E5%BC%8F%E7%9A%84%E3%81%B9%E3%81%8D%E7%B4%9A%E6%95%B0-%E9%AB%98%E9%80%9F%E3%81%AB%E8%A8%88%E7%AE%97%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%82%E3%81%AE#toc21
Depends on
Verified with
Code
Back to top page