QOJ #1285.Stirling Number
一道非常厉害的题目。
题意
求无标号第一类斯特林数第 \(n\) 行一段区间之和。
相当于求:
\[\sum_{i=0}^{m}c(n,i)\mod p
\]
其中 \(c(n,i)\) 为无标号第一类斯特林数,且有 \(n,m\le 10^{18},p\le 10^6\)。
Sol
考虑一个性质:
\[x^{\overline p}\equiv x^p-x \mod p
\]
证明比较简单,考虑费马小定理,\(x^p\equiv x\mod p\)。而 \(x,x+1,\cdots,x+p-1\) 中一定有一个数是 \(p\) 的倍数,因此两边模 \(p\) 都等于 \(0\)。
因此对于一个比较大的数 \(n\),令 \(n=pq+r,r<p\)。
\[\begin{aligned}
x^{\overline n}&\equiv x(x+1)\cdots(x+n-1)
\\
&\equiv \prod_{l=0}^{q-1}(x+pl)^{\overline p}(x+pq)^{\overline r}
\\
&\equiv (x^p-x)^qx^{\overline r}
\\
&\equiv x^q(x^{p-1}-1)^qx^{\overline r} \mod p
\end{aligned}
\]
令 \(k-q=a(p-1)+b,0<b<p\),根据 \(c(n,k)\) 的定义而有:
\[\begin{aligned}
c(n,k)&\equiv [x^k]x^{\overline n}
\\
&\equiv [x^{k-q}](x^{p-1}-1)^qx^{\overline r}
\\
&\equiv [x^{k-q}](\sum_{l=0}^{q} (-1)^{q-l}{q\choose l}x^{l(p-1)})(\sum_{l=0}^{r}c(r,l)x^l)
\\
&\equiv (-1)^{q-a}{q\choose a}c(r,b)
\mod p
\end{aligned}
\]
因此,令 \(m-q=k(p-1)+t,0<t<p\), 则有:
\[\begin{aligned}
\sum_{l=0}^m c(n,l)\equiv& \sum_{i=0}^{t}c(r,i)\sum_{j=0}^k(-1)^{q-j}{q\choose j}
\\
&+\sum_{i=t+1}^rc(r,i)\sum_{j=0}^{k-1}(-1)^{q-j}{q\choose j} \mod p
\end{aligned}
\]
考虑一个公式:
\[\sum_{j=0}^k(-1)^{j}{q\choose j}=(-1)^k{q-1\choose j}
\]
这个可以用归纳法证明。
因此有:
\[\begin{aligned}
\sum_{l=0}^mc(n,l)\equiv& \sum_{i=0}^t c(r,i) (-1)^{q-k}{q-1\choose k}+\sum_{i=t+1}^{r}c(r,i)(-1)^{q-k+1}{q-1\choose k-1}
\\
\equiv& (-1)^{q-k}\left({q\choose k}\sum_{i=0}^t c(r,i) - {q - 1\choose k - 1}\sum_{i=0}^r c(r,i) \right)
\\
\equiv& (-1)^{q-k}\left({q\choose k}\sum_{i=0}^t c(r,i) - {q - 1\choose k - 1}r! \right) \mod p
\end{aligned}
\]
随后问题在于,对于任意小质数模数 \(p\) 和任意 \(r\) 求 \(\sum_{i=0}^tc(r,i)\)。
这里可以用任意模数 NTT,但是我加了大佬 NaCly_Fish 的 qq 好友特地问了这个问题,实际上有严格线性的方法。
考虑对于一个多项式 \(f(x)\) 以及 \(p\) 的原根 \(g\),知道 \(f(1),f(g),\cdots,f(g^{p-2})\) 的值,我们可以在严格线性的时间复杂度内求出 \(f(x)\) 前 \(t\) 项系数之和。
关键技巧在于只有 \(k=0\) 满足 \(g^k+g^{2k}+\cdots+g^{(p-1)k}\equiv-1\mod p\),其他 \(k>0\) 的结果均为 \(0\)。因此具体地如下:
\[\begin{aligned}
\sum_{l=0}^t f_t\equiv& - \sum_{l=0}^{p-2}\left( f(g^l) \sum_{j=0}^m g^{-lj} \right)
\\
\equiv& -(m+1)f(1)-\sum_{l=1}^{p-2}f(g^l) \frac{g^{-l(m+1)}-1}{g^{-l}-1} \mod p
\end{aligned}
\]
至此,将这个公式套回上式,得到 \(O(p)\) 的线性做法。