这是一道魔改题,启发自luogu P4231 三步必杀
易发现一个初始项\(a_1\)、公差\(b_1\)的等差数列与一个初始项\(a_2\)、公差\(b_2\)的等差数列相加得到一个初始项\((a_1+a_2)\)、公差\((b_1+b_2)\)的等差数列
考虑对固定区域的序列操作,发现可以简单维护初始项的标记\(tag_a\)和公差的标记\(tag_b\),求和也可以直接用等差数列求和公式
于是只需用线段树维护区间操作与区间和,复杂度\(O((n+m)\log{n})\)
这是一道原创题
因为 \(p\) 是质数且 \(b < p\),必然存在 \(b\) 的逆元 \(I_b\)
于是将所求式子转化:
\(\big(\ \prod_{i=0}^{n}{\ (a + i \times b)\ } \ \big) \mod p\ \ \Rightarrow \ \ \big[\ \big(\ \prod_{i=0}^{n}{\ (\frac{a}{b} + i)\ } \ \big)\ \times b^{n+1}\ \big] \mod p\)
将 \(b^{n+1}\) 提出来单独计算,记 \(\frac{a}{b}\) 在模 \(p\) 意义下的值为 \(c\)
现在只需求 \(\big(\ \prod_{i=0}^{n}{\ (c + i)\ } \ \big) \mod p\)
即 \(\big(\ \prod_{i=c}^{n+c}{\ i\ } \ \big) \mod p\)
差分得 \(\big[\ \big(\ \prod_{i=1}^{n+c}{\ i\ } \ \big)\ \times\ \big(\ \prod_{i=1}^{c-1}{\ i\ } \ \big)^{-1}\ \big] \mod p\)
于是只需预处理阶乘和阶乘的逆元便可 \(O(1)\) 计算上式
由于 \(c < p\),当 \(n+c \geq p\) 时必有因子 \(p\) (也就是说答案为 \(0\)),所以只需预处理小于 \(p\) 的情况
使用快速幂求 \(b^{n+1}\),总复杂度为 \(O(\ p + q \log{p}\ )\)
读取信息J(dqxxj)
不会输的游戏