信息
- ID
- 1521
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
设 Ri 表示由 i 个数字 1 组成的整数,那么任意候选答案都可以写成 dRi,其中 1≤d≤9、1≤i≤N。
不必真的构造这个可能长达十万位的数,只需维护余数:若当前 r=Ri−1modM,则 RimodM=(10r+1)modM。对每个长度从 9 到 1 检查数位 d,第一个满足 dr≡0(modM) 的数位就是该长度下的最优选择。
按长度从小到大扫描,并用每个新发现的合法候选覆盖答案即可,因为位数更多的重复数字一定更大;位数相同时,数位越大越优。最后输出记录的数位和长度,若始终不存在合法候选则输出 −1。
每个长度只检查九个数位,时间复杂度为 O(N),除输出外额外空间为 O(1)。