1 条题解

  • 0
    @ 2026-8-28 1:20:42

    题解

    思路推导

    任意一个位数至少为 22 的全 11 十进制数都可以由若干个 1111 与 111111 表示。因此,只需判断是否存在非负整数 a,ba,b,使得 x=11a+111bx=11a+111b。

    因为 111≡1(mod11)111\equiv 1\pmod {11},当 bb 连续取 0,1,…,100,1,\ldots,10 时会覆盖模 1111 的全部余数。只要选中的 111b111b 不超过 xx,剩余部分能被 1111 整除,就得到了合法表示。

    做法

    对每个 xx 枚举 b=0,1,…,10b=0,1,\ldots,10。若 111b≤x111b\le x 且 x−111bx-111b 能被 1111 整除,输出 YES;若全部尝试都失败,输出 NO。

    枚举上界为 1010 已足够:更多的 111111 可以减去 1111 个,而减去的总值 11×11111\times111 本身是 1111 的倍数,不会产生新的模 1111 余数。

    正确性证明

    若算法输出 YES,则找到了某个 bb,使 x−111bx-111b 为非负的 1111 的倍数。令 a=(x−111b)/11a=(x-111b)/11,便有 x=11a+111bx=11a+111b,所以表示确实存在。

    反之,若存在 x=11a+111bx=11a+111b,把 bb 对 1111 取余,记为 b′b'。有 0≤b′≤100\le b'\le10,且 111(b−b′)111(b-b') 是 1111 的倍数,因此 x−111b′x-111b' 仍是非负的 1111 的倍数。算法枚举到 b′b' 时一定会接受。故算法判定充要。

    复杂度分析

    每组询问只进行 1111 次常数操作,时间复杂度为 O(t)O(t),额外空间复杂度为 O(1)O(1)。

    • 1

    信息

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