注:不标明题目出处
'''
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.
回文数,题目给出两个两位数相乘所产生的最大的回文数,求两个三位数相乘所产生的最大的回文数
'''
分析:
两个三位数相乘的最大回文数,那么可以遍历所有的三位数,然后判断相乘的是否是回文,然后再在这些回文数里面找到最大的那个
如果你学过其它语言,可能会写出如下代码:
def ispalin(num):
<span style="white-space:pre"> </span>numstr = str(num)
<span style="white-space:pre"> </span>return numstr == numstr[::-1]
def bigest_palind():
tmppalin = []
for i in range(100, 1000):
for j in range(100, 1000):
tmp = first * second
if ispalin(tmp):
tmppalin.append(tmp)
return max(tmppalin)
若你用python,可以写出如下代码:
def bigest_palind():
return max([x*y for x in range(100,1000) for y in range(100,1000) if str(x*y) == str(x*y)[::-1]])
都可以求出最后的结果
进一步分析,对于较小的三位数相乘,即使它们的乘积是回文,那么也会有比它们大的回文满足条件
那么,我们可能会在900-1000这一段中找,所幸,这里找到一个,902*909 = 819918
那么若还有比这更大的回文数,那么其中相乘的数会在900以上
对此可缩小计算范围,如下:
def bigest_palind():
return max([x*y for x in range(900,1000) for y in range(900,1000) if str(x*y) == str(x*y)[::-1]])
对于三位相乘,可以分解成:(100a + 10b + c)(100d + 10e + f)
然然后利用数学知识,可以得到一个满意的结果。
这里就不分析了,因为这是别人的分析过程。
对于二位数,三位数可以如此,那么对于4位数及更多位数可以如何?
还请各位自行分析。