Take the number 192 and multiply it by each of 1, 2, and 3:
\[192 × 1 = 192\] \[192 × 2 = 384\] \[192 × 3 = 576\]By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call 192384576 the concatenated product of 192 and (1,2,3)
The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4, and 5, giving the pandigital, 918273645, which is the concatenated product of 9 and (1,2,3,4,5).
What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product of an integer with (1,2, … , n) where n > 1?
全数字的倍数
将192分别与1、2、3相乘:
\[192 × 1 = 192\] \[192 × 2 = 384\] \[192 × 3 = 576\]连接这些乘积,我们得到一个1至9全数字的数192384576。我们称192384576为192和(1,2,3)的连接乘积。
同样地,将9分别与1、2、3、4、5相乘,得到1至9全数字的数918273645,即是9和(1,2,3,4,5)的连接乘积。
对于n > 1,所有某个整数和(1,2, … ,n)的连接乘积所构成的数中,最大的1至9全数字的数是多少?
numbers = []
result_number = 0
result_result = 0
def check(number):
str_number = str(number)
if '0' in str_number:
return False
for s in str_number:
if str_number.count(s) > 1:
return False
return True
for i in reversed(range(1, 9876)):
if check(i):
numbers.append(i)
for i in numbers:
result = ''
for n in range(1, 5):
result += str(i * n)
if not check(eval(result)):
break
if len(result) >= 9:
if eval(result) > result_result:
result_result = eval(result)
result_number = i
for j in range(1, n + 1):
print "%s * %s = %s" % (i, j, i * j)
print
break
print result_number, result_result
其实不用循环,因为第一个肯定是最大的,我原来还想着直接用草稿纸算……