题意:
给定 \(n,m,M\),对每个 \(k \in [0,M-1]\) 求有多少个长度为 \(n\) 的不降序列 \(A\),满足:
- \(A_i \in [0,m]\)
- \(\sum A_i \bmod M = k\)
\(1 \le n,m \le 10^6\)
\(1 \le M \le 500\)
题意看上去非常典。
首先给第 \(i\) 个位置上的数字加上 \(i-1\),那么就变成了上升序列。
下面令 \(m \to m+n-1\),剩下的问题是一个经典的单位根反演。
考虑 \(m\) 是 \(M\) 倍数的情况,可以知道答案显然是:
\[[x^{k+aM}y^n] \prod_{i=0}^{m}(1+x^iy)
\]
施加单位根反演,令 \(F(x)=[y^n]\prod_{i=0}^m (1+x^iy)\)。
即我们需要对每个 \(k\) 求得:
\[g_k=\sum_i f_i [M | i-k]\\
=\sum_i f_i \dfrac{\sum_{j=0}^{M-1} w_{M}^{j(i-k)}}{M}\\
\]
提出这个 \(\dfrac{1}{M}\) 在最后计算。
\[=\sum_{j=0}^{M-1} w_M^{-jk} \sum_i f_i w_{M}^{ij}\\
=\sum_{j=0}^{M-1} w_M^{-jk} F(w_M^j)
\]
我们考虑展开 \(F\):
\[=\sum_{j=0}^{M-1} w_M^{-jk} [y^n]\prod_{i=0}^m (1+w_M^{ij}y)
\]
令 \(d=\gcd(j,M)\),可得:
\[=\sum_{j=0}^{M-1} w_{M/d}^{-jk/d} [y^n]\prod_{i=0}^m (1+w_{M/d}^{ij/d}y)
\]
枚举 \(t=M/d\),则:
\[=\sum_{t|M} \sum_{j=0}^{t-1} [(j,t)=1] w_{t}^{-jk} [y^n]\prod_{i=0}^m (1+w_{t}^{ij}y)
\]
考虑后面的式子,因为我们有 \((j,t)=1\),因此直接有:
\[\prod_{i=0}^{t-1} (1+w_{t}^{ij}y)=1-(-y)^t
\]
(考察 \(y^t=1\) 的因式分解。)
\[=\sum_{t|M} \sum_{j=0}^{t-1} [(j,t)=1] w_{t}^{-jk} [y^n] (1-(-y)^t)^{m/t}
\]
令 \(n\) 是 \(t\) 的倍数,答案显然是:
\[Ans=\sum_{t|M,n} \sum_{j=0}^{t-1} [(j,t)=1] w_{t}^{-jk} \binom{m/t}{n/t}(-1)^{(n/t)(t+1)} \\
=\sum_{t|M,n} \binom{(m+1)/t}{n/t}(-1)^{n+n/t}\sum_{j=0}^{t-1} [(j,t)=1] w_{t}^{-jk}
\]
注意到 \(\sum_{j=0}^{t-1} w_{t}^{-jk}=\sum_{d|t} \sum_{j=0}^{d-1} [(j,d)=1]w_{d}^{-jk}\).
直接运用莫比乌斯反演可得:
\[\sum_{j=0}^{t-1} [(j,t)=1]w_{t}^{-jk} = \sum_{d|t} \mu(t/d) \sum_{j=0}^{d-1} w_{d}^{-jk}=\sum_{d|t} \mu(t/d)[d|k]d
\]
因此上式等于
\[\sum_{t|M,n} \binom{(m+1)/t}{n/t}(-1)^{n+n/t}\sum_{d|t,k} \mu(t/d)d
\]
记 \(w=\lfloor\dfrac{m}{M}\rfloor\times M\),考虑计算 \((w,m]\) 的贡献。
大力 dp 出 \((w,m]\) 内,使用的数字个数;\(\bmod M\) 的值;此时的方案数。
预处理后面一个 \(\sum\) 的值,即可在 \(O(n+m+M^3\ln M)\) 的时间内通过此题。
事实上会被卡常,精心思考一下,可以去掉那个 \(\ln\)。
随机卡卡常其实也可以过。