1 条题解

  • 0
    @ 2026-8-25 17:32:33

    题解

    思路

    题目给出了方程组

    xbi(modai)(1in)x\equiv b_i\pmod {a_i}\quad(1\le i\le n),

    并保证所有模数两两互质。根据中国剩余定理,模 M=aiM=\prod a_i 意义下恰有一个解,因此只需构造区间 [0,M)[0,M) 内的解。

    做法

    小乘积

    M106M\le 10^6 时,可以从 00M1M-1 依次枚举 xx,检查它是否满足全部同余式。中国剩余定理保证一定能在这个区间内找到唯一答案。

    模数均为质数

    Mi=M/aiM_i=M/a_i。当 aia_i 为质数时,由费马小定理,MiM_i 在模 aia_i 意义下的逆元为

    Miai2modaiM_i^{a_i-2}\bmod a_i。

    于是可以直接计算中国剩余定理的构造式。

    一般情形

    对于任意两两互质的模数,用扩展欧几里得算法求出 MiM_i 在模 aia_i 意义下的逆元 tit_i。答案为

    xi=1nbiMiti(modM)x\equiv\sum_{i=1}^{n}b_iM_it_i\pmod M。

    中间乘积可能远超 64 位整数范围,因此计算乘积与模加法时使用 128 位整数。

    正确性证明

    对任意一个下标 jj,当 iji\ne j 时,MiM_i 含有因子 aja_j,所以第 ii 项模 aja_j00;而第 jj 项满足 Mjtj1(modaj)M_jt_j\equiv1\pmod {a_j},故总和模 aja_j 恰为 bjb_j。因此构造出的 xx 满足全部同余式。

    由于模数两两互质,中国剩余定理保证模 MM 的解唯一。将构造结果规范到 [0,M)[0,M) 后,所得数就是最小非负解。

    复杂度

    满分算法对每个模数执行一次扩展欧几里得算法:

    • 时间复杂度为 O ⁣(i=1nlogai)O\!\left(\sum_{i=1}^{n}\log a_i\right)
    • 空间复杂度为 O(1)O(1)
    • 1

    【模板】中国剩余定理(CRT)/ 曹冲养猪

    信息

    ID
    1056
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    0
    上传者