"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.\n",
"\n",
"Let $d_1$ be the 1st digit, $d_2$ be the 2nd digit, and so on. In this way, we note the following:\n",
"\n",
"$d_2d_3d_4$=406 is divisible by 2\n",
"\n",
"$d_3d_4d_5$=063 is divisible by 3\n",
"\n",
"$d_4d_5d_6$=635 is divisible by 5\n",
"\n",
"$d_5d_6d_7=357$ is divisible by 7\n",
"\n",
"$d_6d_7d_8=572$ is divisible by 11\n",
"\n",
"$d_7d_8d_9=728$ is divisible by 13\n",
"\n",
"$d_8d_9d_{10} =289$ is divisible by 17\n",
"\n",
"Find the sum of all 0 to 9 pandigital numbers with this property."
"s = sum([int(\"\".join(p)) for p in itertools.permutations(\"0123456789\") if is_sub_string_divisible(p)])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"16695334890\n"
]
}
],
"source": [
"print(s)\n",
"assert(s == 16695334890)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I just want to write my own permutations functions to see that I am able to do it quickly. We pick each element once and combine it with the permutations for the remaining items:"