Die Nummer 1406357289 ist eine pan-digitale Nummer von 0 bis 9 (da 0 bis 9 einmal vorkommen). Diese Nummer hat eine interessante Teilzeichenfolge.
Sei d1 die erste Ziffer und d2 die zweite Ziffer und definiere dn in der folgenden Reihenfolge. Mit dieser Notation können wir Folgendes sehen.
d2d3d4 =406 ist teilbar durch 2
d3d4d5 =063 ist teilbar durch 3
d4d5d6 =635 ist teilbar durch 5
d5d6d7 =357 ist teilbar durch 7
d6d7d8 =572 ist teilbar durch 11
d7d8d9 =728 ist teilbar durch 13
d8d9d10 =289 ist teilbar durch 17
Finden Sie mit dieser Eigenschaft die Summe von 0 bis 9 schwenkbaren digitalen Zahlen. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2043
Die Codierung erfolgte mit dem zuvor erstellten Pan Digital Number Generator. Aber es ist ziemlich spät.
# coding: utf-8
import copy
import math
def pandigital(digit,seq1,seq2=[]):
iter1 = map(str,seq1)
if seq2:
iter2 = map(str,seq2)
else:
iter2 = copy.deepcopy(iter1)
for d in range(digit-1):
iter1 = (x+y for x in iter1 for y in iter2 if not (y in x))
return iter1
def is_divisible(n):
div_list = [2, 3, 5, 7, 11, 13, 17]
for d in range(2,9):
if (int(n[d-1:d+2]) % div_list[d-2]) != 0:
return False
return True
def main():
digit = 10
ans = 0
for pdg in pandigital(digit,range(digit),range(digit)):
if is_divisible(pdg):
ans += int(pdg)
print ans
Recommended Posts