Problem:
The number, 1406357289, is a 0 to 9 pandigital number because it is made up of each of the digits 0 to 9 in some order, but it also has a rather interesting sub-string divisibility property.
Let d1 be the 1st digit, d2 be the 2nd digit, and so on. In this way, we note the following:
- d2d3d4=406 is divisible by 2
- d3d4d5=063 is divisible by 3
- d4d5d6=635 is divisible by 5
- d5d6d7=357 is divisible by 7
- d6d7d8=572 is divisible by 11
- d7d8d9=728 is divisible by 13
- d8d9d10=289 is divisible by 17
Find the sum of all 0 to 9 pandigital numbers with this property.
One Possible Solution:
# Python version = 2.7.1
# Platform = win32
"""run_time was 36 seconds"""
import itertools
import time
def get_divisibles(s):
"""Get the 7 divisibles"""
x = list(str(s))
L = []
for i in xrange(1, 8):
d = x[i] + x[i + 1] + x[i + 2]
L.append(d)
return L
def isdivisible(y, LL):
"""Check the 7 divisibles"""
if int(y[0]) % int(LL[0]) == 0 and int(y[1]) % int(LL[1]) == 0 \
and int(y[2]) % int(LL[2]) == 0 and int(y[3]) % int(LL[3]) == 0 \
and int(y[4]) % int(LL[4]) == 0 and int(y[5]) % int(LL[5]) == 0 \
and int(y[6]) % int(LL[6]) == 0:
return True
else:
return False
def main():
"""Main Program"""
start_time = time.time()
summer = 0
x = itertools.permutations('0123456789', 10)
for n in x:
s = ''.join(n)
y = get_divisibles(s)
LL = [2, 3, 5, 7, 11, 13, 17]
z = isdivisible(y, LL)
if z == True:
summer = summer + int(s)
else:
continue
print "Answer = ", summer
stop_time = time.time()
run_time = stop_time - start_time
print "run_time = ", run_time
if __name__ == '__main__':
main()

String slicing might help. Here’s my solution:
import itertools
sum = 0
for s in itertools.permutations(“1234567890″):
s = “”.join(s)
if int(s[1:4]) % 2 == 0 and \
int(s[2:5]) % 3 == 0 and \
int(s[3:6]) % 5 == 0 and \
int(s[4:7]) % 7 == 0 and \
int(s[5:8]) % 11 == 0 and \
int(s[6:9]) % 13 == 0 and \
int(s[7:10]) % 17 == 0:
sum += int(s)
print “Answer:”, sum
Comment by Dave — December 29, 2011 @ 1:39 pm |
Yes, that works too… Thanks for the input.
Greg
Comment by Greg Christian — December 29, 2011 @ 1:58 pm |
Crap, my white space got eaten by wordpress. You can use your imagination I hope. :)
Comment by Dave — December 29, 2011 @ 1:40 pm |