# Grox的序列一:出题人解法——指数生成函数与 NTT ## 计数恒等式 先在有理数上使用指数生成函数。任意次数、偶数次、零次或正奇数次分别对应 $e^x$ 、$\cosh x$ 、$1+\sinh x$ .不同符号选择位置的二项式系数,恰好由指数生成函数乘法处理。因此答案是 $$N![x^N]\ e^{ax}(\cosh x)^b(1+\sinh x)^c.$$ 令 $d=2(b+c)$ ,定义 $$F(z)=(1+z^2)^b(z^2+2z-1)^c=\sum_{i=0}^{d}f_i z^i.$$ 将双曲函数改写为指数函数,得到答案恒等式 $$2^{-(b+c)}\sum_{i=0}^{d}f_i(a-b-c+i)^N.$$ 推导先在有理数上成立,清除二的幂分母后是整数恒等式,因此对任意大的 $N$ 仍可取模;这里没有在模域内除以 $N!$ .仅需二的逆元。第三组的零次选项产生多项式中的 $2z$ ,这个系数不能省略。 ## 大指数与实现边界 逐位读入 $a\bmod p$ 和 $N\bmod(p-1)$ ,同时单独记录 $N$ 是否真正为零。对于非零底数可以用费马小定理约简指数;对于零底数,正指数的结果必须为零,而真正的零指数取一。因此,正的 $p-1$ 倍数不能当成零长度。 所有剩余先规范到 $[0,p-1]$ .乘积用 64 位整数并及时取模,因 $p^2<2^{63}$ 而安全。以下算法中参与求逆的小整数均不超过 $d