某道XJ题

题意

经过打表找规律和题意转化后,题意如下:
假定(p leq 2 * {10} ^ 5, q leq 10 ^ 9, F(n) = prod_{i = 1} ^ n (q ^ i - 1)),且(p, q in mathbb{P}),求(frac{F(n + m)}{F(n) F(m)} mod p)

题解

(r)(q)(mod p)下的阶,则

[q ^ r equiv 1 mod p \q ^ r - 1 equiv 0 mod p \ ]

[egin{aligned}F(n)& = prod_{i = 1} ^ n (q ^ i - 1) \& equiv left(prod_{i = 1} ^ {r} (q ^ i - 1) ight) ^ {lfloor frac{n}{r} floor} left(prod_{i = 1} ^ {n mod r} (q ^ i - 1) ight) mod p \ & equiv left(prod_{i = 1} ^ {r - 1} (q ^ i - 1) ight) ^ {lfloor frac{n}{r} floor} left(prod_{i = 1} ^ {n mod r} (q ^ i - 1) ight) left(prod_{i = 1} ^ {lfloor frac{n}{r} floor} (q ^ {ir} - 1) ight) mod p \ end{aligned} ]

对于(frac{F(n + m)}{F(n)F(m)}),主要问题是处理(prod (q ^ {ir} - 1))的部分(其他部分都有逆元,较容易,需要预处理的部分在(mathcal O(p))的时间就可以完成)。

(G(n) = prod_{i = 1} ^ {lfloor frac{n}{r} floor} (q ^ {ir} - 1)),则

[egin{aligned}G(n)& = prod_{i = 1} ^ {lfloor frac{n}{r} floor} (q ^ r - 1)(q ^ {(i - 1)r} + q ^ {(i - 2)r} + ldots + 1) \& equiv prod_{i = 1} ^ {lfloor frac{n}{r} floor} (q ^ r - 1)(1 + 1 + ldots + 1) mod p \& equiv prod_{i = 1} ^ {lfloor frac{n}{r} floor} (q ^ r - 1) cdot i mod p \& equiv (q ^ r - 1) ^ {lfloor frac{n}{r} floor} left({lfloor frac{n}{r} floor} ight)! mod p \end{aligned} ]

则涉及到的部分(frac{G(n + m)}{G(n) G(m)})即为

[egin{aligned}& frac{(q ^ r - 1) ^ {lfloor frac{n + m}{r} floor} left({lfloor frac{n + m}{r} floor} ight)!}{(q ^ r - 1) ^ {lfloor frac{n}{r} floor} left({lfloor frac{n}{r} floor} ight)! (q ^ r - 1) ^ {lfloor frac{m}{r} floor} left({lfloor frac{m}{r} floor} ight)!} mod p \equiv & frac{(q ^ r - 1) ^ {lfloor frac{n + m}{r} floor} left({lfloor frac{n + m}{r} floor} ight)!}{(q ^ r - 1) ^ {lfloor frac{n}{r} floor + lfloor frac{m}{r} floor} left({lfloor frac{n}{r} floor} ight)! left({lfloor frac{m}{r} floor} ight)!} mod p \end{aligned} ]

易见,当且仅当(lfloor frac{n + m}{r} floor = lfloor frac{n}{r} floor + lfloor frac{m}{r} floor)的时候,上式不为0。

否则,包含((q ^ r - 1))的部分全部消去,剩下的是一个组合数的计算,是个经典问题,可以用lucas定理(mathcal O(log n))递归处理。

总复杂度(mathcal O(p + T log n))

原文地址:https://www.cnblogs.com/psimonw/p/12039857.html