Project Euler Problem 004
http://projecteuler.net/index.php?section=problems&id=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.
回文数っていうの初めて知った。
「しんぶんし」みたいに逆から読んでも同じ数字になる数のことを言う。
数が回文数かどうかをチェックするには、
def is_palindromic_number(n): return str(n) == str(n)[::-1]
こんな感じでもOKだけど、これは回文数というよりは回文のチェックなので
def is_palindromic_number(n): def reverse(n): result = 0 while n: result = result * 10 + n % 10 n /= 10 return result return n == reverse(n)
こういう感じの方が良いのかな?
問題の回文数のための3桁の2つの数の見つけ方はよく分からなかったので、Greedyに探した。
def is_palindromic_number(n): def reverse(n): result = 0 while n: result = result * 10 + n % 10 n /= 10 return result return n == reverse(n) result = 0 for i in xrange(999, 100, -1): for j in xrange(i, 100, -1): x = i * j if result > x: break cnt += 1 if is_palindromic_number(x): result = x print (i, j, x) print result
答え: 993 * 913 = 906609