1 条题解

  • 0
    @ 2026-9-3 10:57:33

    题解

    思路

    设整张票的数字和模 kk 为 SS。某一位 aia_i 满足条件,等价于 2ai≡S(modk)2a_i\equiv S\pmod k。与其直接对“存在”做容斥,不如固定总和 SS,统计完全不含任何合法数字的非幸运车票。

    做法

    子任务一

    k=1k=1 时只有全零车票,且它一定幸运,答案为 11。

    子任务二

    枚举所有 knk^n 张车票,计算总和,再检查是否有一位满足 2ai≡S(modk)2a_i\equiv S\pmod k。

    满分算法

    枚举 S=0,1,…,k−1S=0,1,\ldots,k-1。禁用所有满足 2d≡S(modk)2d\equiv S\pmod k 的数字 dd,再做长度和模数的动态规划:

    dpi+1,(r+d) mod k+=dpi,r.dp_{i+1,(r+d)\bmod k}\mathrel{+}=dp_{i,r}.

    完成 nn 位后,dpn,Sdp_{n,S} 就是总和为 SS 且没有任何一位能够见证幸运条件的车票数。所有非幸运车票按自身总和恰好被统计一次,因此

    答案=kn−∑S=0k−1dpn,S(modm).\text{答案}=k^n-\sum_{S=0}^{k-1}dp_{n,S}\pmod m.

    正确性说明

    对任意车票,其总和模 kk 唯一确定为某个 SS。若它含有满足 2d≡S2d\equiv S 的数字,则且仅则该位等于其余位之和,车票幸运;否则它被对应 SS 的动态规划统计为非幸运。两类互斥且覆盖全部 knk^n 张车票,故上述减法得到的正是答案。

    复杂度

    满分算法时间复杂度 O(nk3)O(nk^3),空间复杂度 O(k)O(k);枚举算法为 O(nkn)O(nk^n)。

    • 1

    信息

    ID
    1370
    时间
    3000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者