import math,time
def tevemadar_version(maxInt):
maxpal=0
for x in range(maxInt,0,-1):
if x*x<maxpal: # 4.
break
for y in range(x,max(maxpal//x,10**int(math.log10(x))-1),-1): # 1. 3. 5.
num=x*y
if str(num) == str(num)[::-1]:
maxpal=num
break # 2.
return maxpal
def mushif_version(maxInt):
largest_palindrome = 9
digit_count = len(str(maxInt))
a = maxInt
while a >= 10**(digit_count-1):
if a % 11 == 0:
b = maxInt
divided_by = 1
else:
b = maxInt - maxInt % 11
divided_by = 11
while b >= a:
if a * b <= largest_palindrome:
break
prod = a * b
str_num = str(prod)
if str_num == str_num[::-1]:
largest_palindrome = prod
b = b - divided_by
a = a - 1
return largest_palindrome
print("tevemadar_version:")
start=time.time()
print(tevemadar_version(9))
print(tevemadar_version(99))
print(tevemadar_version(999))
print(tevemadar_version(9999))
print(tevemadar_version(99999))
print(tevemadar_version(999999))
print("{0} seconds".format(time.time()-start))
start=time.time()
print("\nmushif_version:")
print(mushif_version(9))
print(mushif_version(99))
print(mushif_version(999))
print(mushif_version(9999))
print(mushif_version(99999))
print(mushif_version(999999))
print("{0} seconds".format(time.time()-start))