1 条题解

  • 0
    @ 2026-5-18 20:17:51

    A. Adjacent Digit Sums 详细题解

    问题理解

    给定两个正整数 xxyy,问是否存在一个整数 nn,使得 S(n)=xS(n)=xS(n+1)=yS(n+1)=y,其中 S(a)S(a) 表示十进制数 aa 的各位数字之和。


    核心观察

    nn11 时,其十进制表示的变化规律:

    • 如果 nn 的末尾不是 99,则 n+1n+1 只是最后一位 +1+1,其他位不变
    • 如果 nn 的末尾有 kk 个连续的 99k1k \ge 1),则这 kk99 变成 00,前一位 +1+1,更前面的位不变

    因此,S(n)S(n)S(n+1)S(n+1) 的关系:

    • 情况一(末尾不是 99):S(n+1)=S(n)+1S(n+1) = S(n) + 1
    • 情况二(末尾有 kk99):S(n+1)=S(n)9k+1S(n+1) = S(n) - 9k + 1,其中 k1k \ge 1

    推导条件

    x=S(n)x = S(n)y=S(n+1)y = S(n+1)

    由情况一:y=x+1y = x + 1 是可能的(只需 nn 末尾不为 99)。

    由情况二:y=x9k+1y = x - 9k + 1,其中 k1k \ge 1,即 x+1y=9kx + 1 - y = 9k

    因此:

    • x+1yx + 1 - y 必须是 99 的正整数倍,即 x+1y9x + 1 - y \ge 9 且能被 99 整除
    • 同时由 k1k \ge 1x+1y9x + 1 - y \ge 9

    注意:当 y=x+1y = x + 1 时,x+1y=0x + 1 - y = 0,不是 99 的正整数倍,所以不属于情况二,但属于情况一。


    最终判断条件

    存在满足条件的 nn 当且仅当:

    1. y=x+1y = x + 1,或
    2. yxy \le x(x+1y)mod9=0(x + 1 - y) \bmod 9 = 0

    为什么 yxy \le x?因为从 y=x9k+1y = x - 9k + 1y=x+19kxy = x + 1 - 9k \le x(因为 k1k \ge 1)。所以情况二必然满足 yxy \le x

    反之,如果 y>xy > xyx+1y \ne x + 1,则不可能(因为 y=x+1y = x + 1 是唯一的增加情况,其他情况都会减少或不变?实际上 yy 也可能等于 xx 吗?y=xy = x 需要 x+1x=1x + 1 - x = 1 不是 99 的倍数,所以不可能。所以 y>xy > x 时只能是 y=x+1y = x + 1)。


    等价写法

    条件可以合并为:

    $$y = x + 1 \quad \text{或} \quad (x + 1 - y) \bmod 9 = 0 \ \text{且} \ y \le x $$

    注意:当 y=x+1y = x + 1 时,(x+1y)mod9=0(x + 1 - y) \bmod 9 = 0 也成立(因为 0mod9=00 \bmod 9 = 0),所以其实可以简化为:

    存在 nn 当且仅当 (x+1y)mod9=0(x + 1 - y) \bmod 9 = 0yx+1y \le x + 1,同时排除 y=xy = x 的情况?

    验证:y=xy = x 时,x+1x=1x + 1 - x = 11mod901 \bmod 9 \ne 0,所以自动排除。
    y=x+1y = x + 1 时,0mod9=00 \bmod 9 = 0,且 yx+1y \le x + 1 成立。
    y>x+1y > x + 1 时,x+1y<0x + 1 - y < 0,模 99 可能为 00(例如 x=1,y=11x=1, y=11x+1y=9x+1-y = -9,模 9900),但 y>x+1y > x + 1,这种情况实际上不可能(因为 nnn+1n+1 的数字和最多相差 9k19k-1k1k \ge 1y<xy < x,不能 y>x+1y > x+1)。所以需要额外限制 yx+1y \le x + 1

    更严格的条件:

    $$(x + 1 - y) \bmod 9 = 0 \ \text{且} \ y \le x + 1 \ \text{且} \ y \ne x $$

    y=xy = x 已被模条件排除,所以只需要:

    (x+1y)mod9=0 且 yx+1(x + 1 - y) \bmod 9 = 0 \ \text{且} \ y \le x + 1

    然而 y=x+10y = x + 10 时,x+1(x+10)=9x+1-(x+10) = -9,模 9900,但 y=x+10>x+1y = x+10 > x+1,实际不可能。所以必须 yx+1y \le x + 1

    因此最终简洁判断:

    $$\boxed{(x + 1 - y) \bmod 9 = 0 \ \text{且} \ y \le x + 1} $$

    示例验证

    xx yy x+1yx+1-y 99 yx+1y \le x+1 结论
    1 2 0 0 ✅ 2 ≤ 2 ✅ Yes
    77 1 1 ❌ No
    997 999 -1 8 ❌
    999 1 999 0 ✅ 1 ≤ 1000 ✅ Yes
    1000 1000 1 ❌ No
    1 11 -9 0 ✅ 11 ≤ 2 ❌
    18 1 18 1 ≤ 19 ✅ Yes

    与题目输出完全一致 ✅


    构造方法(证明存在性)

    • y=x+1y = x + 1:取 n=10x1n = 10^{x-1}11 后面跟 x1x-100),则 S(n)=1S(n)=1?不对,应该是 n=10x1n = 10^{x-1}S(n)=1S(n)=1,不是 xx。正确构造:取 nnxx11 组成的数?那样 S(n)=xS(n)=x,但 S(n+1)S(n+1) 会进位,不是 x+1x+1。实际上更简单的构造:$n = 10^{x-1} + 10^{x-2} + \dots + 10^0 = 111\ldots1$(xx11),则 S(n)=xS(n)=xS(n+1)=x+1S(n+1)=x+1 当最后一个数字不是 99 时成立,这里末尾是 11,所以成立。例如 x=1x=1n=1n=1S(1)=1S(1)=1S(2)=2S(2)=2x=2x=2n=11n=11S(11)=2S(11)=2S(12)=3S(12)=3。对的。

    • x+1y=9kx+1-y=9kk1k \ge 1):取 nn 为末尾有 kk99,前面数字和为 x9kx - 9k 的数。例如,取 nnx9kx-9k11 后跟 kk99 组成,则 S(n)=x9k+9k=xS(n)=x-9k+9k=xn+1n+1 会进位使 kk9900,前一位 +1+1,因此 S(n+1)=x9k+1=yS(n+1)=x-9k+1 = y


    复杂度

    每个测试用例 O(1)O(1) 时间,总复杂度 O(t)O(t)


    总结

    本题的关键是理解 nnn+1n+1 数字和的变化规律,将其分为“末尾非 99”和“末尾有连续 99”两种情况,分别得到 y=x+1y = x+1y=x9k+1y = x - 9k + 1k1k \ge 1)。最终判断条件可统一为 (x+1y)mod9=0(x+1-y) \bmod 9 = 0yx+1y \le x+1

    • 1

    信息

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