## Largest palindrome product

### Problem 4

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

Ans:- 906609

Program:

def compute():
ans = max(i * j
for i in range(100, 1000)
for j in range(100, 1000)
if str(i * j) == str(i * j)[ : : -1])
return str(ans)

print(compute())

Programming Problem of this from Hackerrank.com

A palindromic number reads the same both ways. The smallest 6 digit palindrome made from the product of two 3-digit numbers is 101101= 143 x 707.

Find the largest palindrome made from the product of two 3-digit numbers which is less than N .

Input Format

First line contains T  that denotes the number of test cases. This is followed by T  lines, each containing an integer, N .

Constraints

• 1⩽T⩽100
• 101101<N<1000000

Output Format

Print the required answer for each test case in a new line.

Sample Input

2
101110
800000

Sample Output

101101
793397

Explanation

• 101101 is product  of 143 and 707 .
•  793397 is product of  869 and 913.

Solution:-

1) Simply find all the palindrome number that are the product of two 3-digits numbers, because they are limited and easy to find.

2) Store them in a list and sort it

3) Go through the list and find which number is smaller than n and break the loop, print the number we find

import sys
palindromelist = []
for i in range(100, 1000):
for j in range(100, 1000):
a = i * j
if str(a) == str(a)[::-1] and a not in palindromelist:
palindromelist.append(a)
palindromelist.sort()
length = len(palindromelist)

n = int(input())
for _ in range(n):
a = int(input())
for i in range(length - 1, -1, -1):
if palindromelist[i] < a:
print(palindromelist[i])
break