今天是第四题。
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.
回文数,是指一个整数从左到右和从右到左相等的书,比如说11,121,112232211。这道题的要求是找出最大的一个回文数,要求这个数是由两个三位数相乘而得。
判断回文数简介的方式是利用python的字符串反转功能,即若s[::-1]==s,则该字符串是个回文字符串。思路是判断所有三位数两两乘积,判断是否是回文数,然后储存在一个数组中。利用max寻求数组中的最大值。这种方式简单易实现,但是不利于得到是哪两个数相乘的结果。另一方面,还是效率问题,直接历遍有所可能效率太低。
Python实现:
#========================================================================
# FileName: Palindromic.py
# Author: hsyyf
# Email: 931107419@qq.com
# HomePage: http://www.hsyyf.me
# LastChange: 2012-06-26 12:14:52
#========================================================================
x=[]
for i in range(999,100,-1):
for j in range(999,100,-1):
m=i*j
s=str(m)
if s==s[::-1]:
x.append(m)
break
print(max(x))
input("Input Enter to End")
结果是906609.
应该把 print(m)改成 print(t)
t=1
for i in range(999,100,-1):
—-for j in range(999,100,-1):
——–m=i*j
——–s=str(m)
——–if s==s[::-1]:
————if m>t:
—————-t=m
—————-a=i
—————-b=j
————break #跳出内层循环
print(m)
print(a)
print(b)
#看看行不行,上一条没有缩进
t=1
for i in range(999,100,-1):
for j in range(999,100,-1):
m=i*j
s=str(m)
if s==s[::-1]:
if m>t:
t=m
a=i
b=j
break #跳出内层循环
print(m)
print(a)
print(b)