We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through 5 pandigital.

The product 7254 is unusual, as the identity, 39 × 186 = 7254, containing multiplicand, multiplier, and product is 1 through 9 pandigital.

#### Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.

HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum.

``````

In [1]:

import itertools

products = set()
digits = list(range(1,10))

for psize in [3,4]:
for c in itertools.permutations(digits, psize):
mult1 = int(''.join([str(d) for d in c]))

odigits = set(digits).difference(set(c))
for c2 in itertools.permutations(odigits, 5-psize):
rdigits = odigits.difference(c2)
mult2 = int(''.join([str(d) for d in c2]))
p = [int(d) for d in str(mult1*mult2)]

if len(p) == len(rdigits) and len(set(rdigits).difference(p)) == 0:
print sum(products)

``````
``````

45228

``````
``````

In [ ]:

``````