• 某道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))

  • 相关阅读:
    使用Webuploader大文件分片传输
    php面向对象的封装性
    前端实习经历
    Js_protoType_原型
    SVN客户端与服务器端搭建操作
    安装PL/SQL客户端来访问操作步骤
    安装Oracle数据库操作步骤
    MyEclipse2014安装操作步骤+破解
    模块学习笔记
    json与导入模块目录
  • 原文地址:https://www.cnblogs.com/psimonw/p/12039857.html
Copyright © 2020-2023  润新知