beet's soil

競プロのことなど

\prod (1+x^a_i+x^2a_i+...) の先頭n項をO(n log n)で

FPS!(素振り)
これ

無限級数の性質から
j=0xaij=11xai

logをとる
log(11xai)=log(1xai)

logの定義にしたがって計算する
ref.

log(1xai)=aixai11xaidx
=j=0aix(j+1)ai1dx
=j=1aixjai1dx
=j=1aijai1+1xjai1+1dx
=j=1xjaij

これらの和の先頭n項は ain なる ai をその値毎にまとめて計算すると調和級数から O(nlogn) で計算できる

指数法則から、求めるものは和をexpしたものになる
expの計算量も O(nlogn)