本文最后更新于254 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com
1.题目基本信息
1.1.题目描述
给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。
1.2.题目地址
https://leetcode.cn/problems/largest-palindrome-product/description/
2.解题方法
2.1.解题思路
枚举
2.2.解题步骤
第一步,枚举n位数作为回文数的左侧
第二步,根据回文数的左侧,构建长度为2n的完整的回文数(贪心处理2n长度的,理论上存在2n长度的回文数,所以不讨论奇数位的)
第三步,从大到小枚举n位数,找到第一个能被回文数整除的
3.解题代码
python代码
class Solution:
def largestPalindrome(self, n: int) -> int:
# 思路:枚举
if n == 1:
return 9
# 第一步,枚举n位数作为回文数的左侧
upper = 10 ** n - 1
for left in range(upper, upper // 10, -1):
# 第二步,根据回文数的左侧,构建长度为2n的完整的回文数(贪心处理2n长度的,理论上存在2n长度的回文数,所以不讨论奇数位的)
num, x = left, left
while x:
num = num * 10 + x % 10
x //= 10
# 第三步,从大到小枚举n位数,找到第一个能被回文数整除的
x = upper
while x * x >= num:
if num % x == 0:
return num % 1337
x -= 1
4.执行结果










