给定一个等差数列,求他的各项乘积,你只需要输出其对 \(1145141\) 取模的结果。
具体的,每组给定 \(d,n,a\) 分别表示公差,长度,首项,你需要求出 \(\prod_{i=0}^{n-1} (a+i\times d) \mod 1145141\)。
非常降智好的一道题,赛时往根号分治想,然后寄掉了
我们考虑 \(d=1\) 怎么做,显然阶乘,然后判断是否包含 \(mod\) 的倍数即可,复杂度 \(O(mod)\)
然后推广到普遍情况,我们把这个式子提出来 \(d\) 变成: \(d^n\prod_{i=0}^{n-1} (\frac{a}{d}+i) \mod 1145141\)
这不就是 \(\frac{a}{d}\) 到 \(\frac{a}{d} + n - 1\) 的阶乘吗。我们得益于乘法逆元,可以直接用 \(a \times d^{-1} \mod 1145141\) 来代替
注意特判 \(d = 0\) 的情况即可,最终复杂度 \(O(T \log mod)\),瓶颈在快速幂
标签:1145141,frac,复杂度,4218,qbxt,阶乘,mod From: https://www.cnblogs.com/fox-konata/p/17737023.html