3260. 找出最大的 N 位 K 回文数
题目描述
给你两个 正整数 n 和 k。
如果整数 x 满足以下全部条件,则该整数是一个 k 回文数:
x是一个 回文数。x可以被k整除。
以字符串形式返回 最大的 n 位 k 回文数。
注意,该整数 不 含前导零。
示例 1:
输入: n = 3, k = 5
输出: "595"
解释:
595 是最大的 3 位 k 回文数。
示例 2:
输入: n = 1, k = 4
输出: "8"
解释:
1 位 k 回文数只有 4 和 8。
示例 3:
输入: n = 5, k = 6
输出: "89898"
提示:
1 <= n <= 1051 <= k <= 9
解法
方法一
思考
要构造长度为 \(n\) 且能被 \(k\) 整除的最大回文数,\(n\le 10^5\)、\(k\le 9\)。从大到小枚举回文不可行;只需定前半,后半由镜像确定,并对 \(k\) 取模。
按 \(k\) 的因子分类(如 \(1,2,4,5,8\) 只约束尾数,\(3,9\) 约束数位和,\(6,7\) 需同时照顾模),从高位贪心填 \(9\) 并修正最低几位使整模为 \(0\)。题面暂无实现代码,思考依此「定前半、按 \(k\) 修尾」的构造。
1 | |
1 | |
1 | |
1 | |