1 条题解

  • 0
    @ 2026-9-9 9:24:07

    题解

    思路

    对一个数 xx,若要让它同时成为若干个给定整数的倍数,只需把它增加到这些整数最小公倍数的下一个倍数,代价为 (L−x mod L) mod L(L-x\bmod L)\bmod L。

    做法

    用三位二进制状态表示当前是否已经得到 a,b,ca,b,c 的倍数,预处理每个非空状态对应的最小公倍数。依次处理每个 AiA_i,它可以不变,也可以承担任意非空状态的要求;据此更新八个状态的最小代价,答案就是最终状态 1112111_2。

    复杂度

    每个数只进行常数次状态转移,时间复杂度为 O(82N)=O(N)O(8^2N)=O(N),空间复杂度为 O(8)O(8)。计算最小公倍数时先约分再用 __int128 相乘,以避免中间乘积溢出。

    • 1

    信息

    ID
    1683
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者