题目描述
给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。
示例 1:
输入:n = 2
输出:987
解释:99 x 91 = 9009, 9009 % 1337 = 987
示例 2:
输入: n = 1
输出: 9
提示:
- 1 <= n <= 8
题解思路
给定n位数字 两个n位数字乘积的最大回文整数
- 回文数=左半部分+右半部分
我们从最大的左半部分开始构造出回文数 然后判断其是不是可以由两个n位数乘积得到
题解代码
class Solution:
def largestPalindrome(self, n: int) -> int:
if n==1:
return 9
bound=10**n-1
for left in range(bound,bound//10,-1):
a,b=left,left
while b:
a=a*10+b%10
b//=10
b=bound
while b*b>=a:
if a%b==0:
return a%1337
b-=1