LeetCode479. 最大回文數乘積
阿新 • • 發佈:2018-12-27
你需要找到由兩個 n 位數的乘積組成的最大回文數。
由於結果會很大,你只需返回最大回文數 mod 1337得到的結果。
示例:
輸入: 2
輸出: 987
解釋: 99 x 91 = 9009, 9009 % 1337 = 987
說明:
n 的取值範圍為 [1,8]。
ps:超時的解法,只能過6個用例。
依次構造迴文串,再用迴文的數字去除乘數。找到一個可以整除的為最大的。
(n位數乘n位數的數 ,最大應該是2n位數)
class Solution: def largestPalindrome(self, n): """ :type n: int :rtype: int """ if n ==1 : return 9 lower = 10 ** (n-1) upper = 10 **n - 1 temp = upper while(temp>=lower): temp1 = str(temp) temp2 = temp1[::-1] num = temp1+temp2 i = upper while(i * i > int(num)): if int(num) % i == 0: return int(num)%1337 else: i -= 1 temp -= 1