Comet OJ Contest #15 D. 双十一特惠(困难版)

以 $d(x)$ 表示正整数 $x$ 的十进制表示的数位之和。熟知下列关于 $d(x)$ 的结论:

  1. $d(x) \equiv x \pmod{9}$。从而对于任意正整数列 $a_1, a_2, \dots, a_n$ 有 $\sum_{i=1}^{n} d(a_i) \equiv d(\sum_{i=1}^{n}a_i) \pmod{9}$。

  2. 十进制下,在正整数 $a,b$ 相加的过程中,每发生一次进位数位之和减少 $9$。因而有 $d(a + b) = d(a) + d(b) - 9c(a, b)$。$c(a, b)$ 表示十进制下 $a, b$ 相加发生的进位次数。

十进制下 $k$ 个连续的 1 可表为 $\frac{10^{k} - 1}{9}$。$x = \sum_{i=1}^{n} \frac{10^{k_i} - 1}{9}$ 即 $9x + n = \sum_{i=1}^{n} 10^{k_i}$。题目所问相当于 $\arg\min_{n} 9x+n = \sum_{i=1}^{n} 10^{k_i}$。根据引理一,$n$ 必须满足 $d(9x+n) \equiv n \pmod{9}$(即 $d(n) \equiv n \pmod{9}$)。另外,不难证明,任意正整数 $y$ 都可表为 $\sum_{i=1}^{m} 10^{e_i}$ 且 $m \ge d(y)$。因此,还必须有 $n \ge d(9x+n)$。我们可以证明,这两个必要条件是充分条件。

证明:考虑 $9x+n$ 个 “1” 相加过程,我们知道这个过程中总共发生了 $C = \frac{9x+n - d(9x+n)}{9}$ 次进位。实际上我们可以安排计算过程使得发生 $0$ 到 $C$ 之间的任意次进位。要想使得 $9x + n = \sum_{i=1}^{n} 10^{k_i}$ 只要安排 $\frac{9x+n - n}{9} = x$ 次进位就可以了。举个例子说明所谓“安排若干次进位”是什么意思。考虑 $200$ 个 “1” 相加的过程。假设要安排 $12$ 次进位。我们可以拿出 $10$ 个 “1” 相加,这样就在个位安排了一次进位,剩下一个 “10” 和 $190$ 个 “1”,再拿出十个 “1” 相加则又安排了一次进位,剩下两个 “10” 和 $180$ 个 “1”,如此操作十次可安排十次进位,剩下十个 “10” 和一百个 “1”,然后我们把十个 “10” 相加,在十位安排一次进位,共 $11$ 次进位,剩下一个 “100” 和一百个 “1”,最后再拿出十个 “1” 相加,在个位安排一次进位。这样一共安排了 $12$ 次进位,剩下一个 “100”、一个 “10” 和 $90$ 个 “1”。

另外我们可以给出 $n$ 的上界,$n < d(9x) + 10$。令 $t = 9x$,注意到 $d(t) \equiv 0\pmod{9}$。反复进行下列操作直到 $t$ 变成零:$t \to t+ 1$,$t \to t - 10^{h}$,$h$ 表示 $t$ 的十进制表示的最高位,例如,若 $t = 234$ 则 $h = 2$。注意到每次操作过后 $d(t)\bmod 9$ 不变。因此,每次操作之前必有 $t\ge 10$,因而有 $h\ge 1$。 在 $t \to t+1$ 这一步,$d(t)$ 至多增加 $1$,而 $t \to t-10^h$ 这一步,$d(t)$ 恰好减少 $1$。另外,每 $10$ 次操作之中,必有一次 $t \to t+1$ 使个位发生进位,这次操作过后 $d(t)$ 至少减少 $10$。因此每 $10$ 次操作过后 $d(t)$ 至少减少 $10$,于是有 $ n < d(9x) + 10$。

注:本文参考了源曲明的题解

猜你喜欢

转载自www.cnblogs.com/Patt/p/11927718.html