Home Project Euler Teaching Projects Gallery

Problem 43: Sub-string divisibility

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.


Algorthim:

This problem actually gave me a lot of headache. I attempted to solve this first try and my code was absolutely ugly with bunch of nested for loops

But after couple months of coding, there are a lot of new functions/classes I can use, specifcally something called permutatation

So, we first create an array with our possible digits (0 through 9). Then we find all the permutation of such digits. Then, we iteratively form 3 digit values from the far right and use our store[] array which contains our divisor to check for our necessary condition.

We go through the store[] divisors. If we don't get our condition, we break. If we do we raise our \(k\) value by 1. If at the end of the loop our k = 7, then it's a sub-string divible number!

Code:

Result:

Answer: 16695334890
Runtime: 4.0 seconds