会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
设编号 z 有 L 位、各位之和为 s(z),题面要求 L⋅s(z)=w,并在 [1,1016] 里找最小的 z。
- L 必须是 w 的约数,且 s=w/L 满足 1≤s≤9L(每位最多 9)。L 越大,z 的位数越多,数值一定更大,所以从 L=1 枚举到 L=17 即可,17 是上界 1016 的位数。
- 对固定的 L 和 s,要拼出最小的 L 位数。最高位至少是 1,又至少要留给后面 L−1 位每人最多 9 之后仍能凑满 s,因此最高位取 max(1,s−9(L−1));剩下的和尽量堆到最右边。
- L=17 时,闭区间里只有 10000000000000000 这一个数,它的数位和是 1,因此仅当 w=17 时成立。
- 某个 L 构造出的数若超过上界就丢掉;所有 L 都不行则输出 −1。常见假解:只看一位数、把余数堆到左边、漏掉 17 位的上界点、把质数一律判成 −1(例如 w=11 可以是 11 位且和为 1)。