1 条题解

  • 1
    @ 2023-5-11 16:39:39

    一道类似的题目:uoj 86 mx的组合数。

    基本原理是,注意到我们有 Lucas 定理,我们可以把组合数拆进制,转化成数位 dp 问题。

    问题转化为进行 O(logpv)O(\log_pv) 轮两个长为 pp 的数组的下标乘法卷积和逐点加法。

    逐点加法容易做到 O(p)O(p),关键问题在于乘法卷积。

    注意到 pp 是质数,因此我们直接找出原根,然后把除了 00 位置之外的数全部用离散对数投影到 [0,p1)[0,p-1) 上,转化成普通卷积,NTT 即可维护。

    忽略掉找原根部分的复杂度,总复杂度 O(plogn)O(p\log n),足以通过此题。

    • 1

    信息

    ID
    2629
    时间
    1500ms
    内存
    128MiB
    难度
    10
    标签
    (无)
    递交数
    2
    已通过
    1
    上传者