Find the largest palindrome made from the product of two n-digit numbers.
Since the result could be very large, you should return the largest palindrome mod 1337.
Example:
Input: 2
Output: 987
Explanation: 99 x 91 = 9009, 9009 % 1337 = 987
Note:
The range of n is [1,8].
输入一个n,找出两个n位数的乘积为回文数的数,要求最大
C++(496ms):
1 class Solution { 2 public: 3 int largestPalindrome(int n) { 4 if (n == 1) 5 return 9 ; 6 int upper = pow(10 , n) - 1; 7 int lower = pow(10 , n-1) ; 8 for(int i = upper ; i >= lower ; i--){ 9 long res = buildPalindrome(i) ; 10 for(long j = upper ; res <= j*j ; j--){ 11 if (res % j == 0 && res / j <= upper) 12 return res % 1337 ; 13 } 14 } 15 return -1 ; 16 } 17 18 long buildPalindrome(int num){ 19 string s = to_string(num) ; 20 reverse(s.begin() , s.end()) ; 21 return stol(to_string(num) + s) ; 22 } 23 };