479. 最大回文数乘积
题目描述
给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。
示例 1:
输入:n = 2 输出:987 解释:99 x 91 = 9009, 9009 % 1337 = 987
示例 2:
输入:n = 1 输出:9
提示:
1 <= n <= 8
解法
方法一
思考
求两个 \(n\) 位整数乘积中最大的回文,再模 \(1337\)。\(n\le 8\),枚举所有乘积再判回文过大。
从大到小枚举回文的前半 \(a\),镜像得到回文 \(x\),再检查是否存在 \(n\) 位因子 \(t\)(从 \(10^n-1\) 向下,\(t^2\ge x\))。第一个成功的 \(x\) 即为最大。
先构造回文再试因子,比枚举乘积更早遇到最大值。\(n=1\) 的哨兵返回 \(9\)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |