Welcome to Subscribe On Youtube

479. Largest Palindrome Product

Description

Given an integer n, return the largest palindromic integer that can be represented as the product of two n-digits integers. Since the answer can be very large, return it modulo 1337.

 

Example 1:

Input: n = 2
Output: 987
Explanation: 99 x 91 = 9009, 9009 % 1337 = 987

Example 2:

Input: n = 1
Output: 9

 

Constraints:

  • 1 <= n <= 8

Solutions

  • class Solution {
        public int largestPalindrome(int n) {
            int mx = (int) Math.pow(10, n) - 1;
            for (int a = mx; a > mx / 10; --a) {
                int b = a;
                long x = a;
                while (b != 0) {
                    x = x * 10 + b % 10;
                    b /= 10;
                }
                for (long t = mx; t * t >= x; --t) {
                    if (x % t == 0) {
                        return (int) (x % 1337);
                    }
                }
            }
            return 9;
        }
    }
    
  • class Solution {
    public:
        int largestPalindrome(int n) {
            int mx = pow(10, n) - 1;
            for (int a = mx; a > mx / 10; --a) {
                int b = a;
                long x = a;
                while (b) {
                    x = x * 10 + b % 10;
                    b /= 10;
                }
                for (long t = mx; t * t >= x; --t)
                    if (x % t == 0)
                        return x % 1337;
            }
            return 9;
        }
    };
    
  • class Solution:
        def largestPalindrome(self, n: int) -> int:
            mx = 10**n - 1
            for a in range(mx, mx // 10, -1):
                b = x = a
                while b:
                    x = x * 10 + b % 10
                    b //= 10
                t = mx
                while t * t >= x:
                    if x % t == 0:
                        return x % 1337
                    t -= 1
            return 9
    
    
  • func largestPalindrome(n int) int {
    	mx := int(math.Pow10(n)) - 1
    	for a := mx; a > mx/10; a-- {
    		x := a
    		for b := a; b != 0; b /= 10 {
    			x = x*10 + b%10
    		}
    		for t := mx; t*t >= x; t-- {
    			if x%t == 0 {
    				return x % 1337
    			}
    		}
    	}
    	return 9
    }
    

All Problems

All Solutions