Take the number 192 and multiply it by each of 1, 2, and 3:
1921 = 192
1922 = 384
1923 = 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?
import time
t=time.time()
def CheckPandigital(num):
"""
判断 num是不是Pandigital,如果是返回n值,否则返回1
"""
numstr=""
maxn=1
while 1:
if len(numstr)==9:
if set([str(x) for x in range(1,10)])- set(numstr):#判断1,9个数字是否在numstr里
return 1
else:
return maxn
if len(numstr)>9:
return 1
else:
numstr+=str(num*maxn)
maxn+=1
if __name__ == '__main__':
maxpandigital=1
for num in xrange(98765,0,-1):
if CheckPandigital(num)>1:
maxpandigital=num
break
print maxpandigital,maxpandigital*2
print time.time()-t
9327 18654
0.137000083923