题意
经过打表找规律和题意转化后,题意如下:
假定(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))。