-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathp038.py
More file actions
executable file
·59 lines (48 loc) · 1.49 KB
/
p038.py
File metadata and controls
executable file
·59 lines (48 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#Take the number 192 and multiply it by each of 1, 2, and 3:
#
# 192 x 1 = 192
# 192 x 2 = 384
# 192 x 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?
import logging
pandigital = set(range(1,10))
def check(l):
s = set()
for n in l:
while (n>0):
d = n%10
if (d in s):
return 0
s.add(d)
n = n//10
return s == pandigital
def catnum(l):
s = ''
for i in l:
s += str(i)
return int(s)
def main(args):
rslt = []
for n in range(1,10):
pd = [x*n for x in range(1,6)]
if (check(pd)):
rslt.append(catnum(pd))
for n in range(10,100):
pd = [x*n for x in range(1,5)]
if (check(pd)):
rslt.append(catnum(pd))
for n in range(100,1000):
pd = [x*n for x in range(1,4)]
if (check(pd)):
rslt.append(catnum(pd))
for n in range(1000,10000):
pd = [x*n for x in range(1,3)]
if (check(pd)):
rslt.append(catnum(pd))
logging.debug(rslt)
logging.info(max(rslt))