# Grox的序列五A 题解 **出题人解法:第二类 Stirling 数、下降阶乘与模幂。** Codex(GPT-6)补齐非互质模数的指数边界、零次幂分支,并将同一 Stirling 递推改为滚动数组。没有使用合数模数下不存在的阶乘逆元。 ## 把巨大求和变为有限求和 先单独处理 $k=0$ :由于本题规定零的零次幂为零,答案是 $2^n-1$ ,包括 $n=0$ 时答案为零。 对 $k>0$ ,令 $S(k,j)$ 为第二类 Stirling 数,$(n)_j=n(n-1)\cdots(n-j+1)$ 为下降阶乘。恒等式 $$i^k=\sum_{j=0}^k S(k,j)(i)_j$$ 可以按函数的不同取值数计数:将 $k$ 个标号对象分成 $j$ 个非空原像组,再为这些组指定 $j$ 个不同的目标。于是 $$\binom ni(i)_j=(n)_j\binom{n-j}{i-j}$$ 交换求和顺序后,由二项式定理得到 $$\sum_{i=0}^n i^k\binom ni=\sum_{j=1}^{\min(n,k)}S(k,j)(n)_j2^{n-j}$$ 这里 $S(k,0)=0$ ,且 $j>n$ 的下降阶乘为零。显式使用 $\min(n,k)$ 可以避免构造负指数。 ## Stirling 递推与合数模数 使用 $$S(t,j)=jS(t-1,j)+S(t-1,j-1)$$ 初始 $S(0,0)=1$ ,其他项为零。每行从大下标向小下标更新,只保留一行,时间 $O(k^2)$ 、空间 $O(k)$ .出题人使用完整表格保存同一递推,空间为 $O(k^2)$ ;滚动数组没有更换计数算法。 下降阶乘直接逐项相乘对 $p$ 取模,不能把它改为含模逆元的阶乘比,因为 $p$ 可以为合数。 令 $\phi=\varphi(p)$ .对非负指数 $e$ ,计算 $2^e\bmod p$ 时使用 $$\widehat e=\begin{cases}e,&e<\phi\\e\bmod\phi+\phi,&e\ge\phi\end{cases}$$ 这对偶数模数也成立:对 $p$ 的奇素数幂因子,$2$ 可逆且 $\phi$ 是对应 Euler 函数值的倍数;对二次幂因子 $2^v$ ,当 $e\ge\phi$ 时两个指数都至少为 $v$ ,余数均为零。中国剩余定理合并这些结果。$p=1$ 单独返回零。 读取十进制 $n$ 时保存 $n\bmod p$ 、$n\bmod\phi$ ,以及 $\min(n,\phi+k)$ .最后一个量允许准确判断每个 $n-j$ 是否至少为 $\phi$ ,也允许处理 $n