def muls(n): d = set([0]) dig = [] for mul in count(1): t = to_digits(mul * n) if len(t) != len(set(t)): return False if set(t) & d: return False else: d |= set(t) dig += t if len(d) == 10: return dig elif len(d) > 10: raise Exception
#!/usr/bin/env python from itertools import count from common import to_digits powers = [n**5 for n in range(0, 10)] t = 0 for a in count(10): if a > 1000000: break s = sum([powers[d] for d in to_digits(a)]) if a == s: t += a print(t)
#!/usr/bin/env python from common import to_digits MAX = 9 def is_n_pandigital(digits, end=MAX): ds = sorted(range(1, end + 1)) di = sorted(digits) return ds == di found = set() for m1 in range(1, 10000): for m2 in range(1, 10000): mult = m1 * m2 if mult > 98765: # Naive way of making it faster break digits = to_digits(m1) + to_digits(m2) + to_digits(mult) if is_n_pandigital(digits): found.add(mult) print(sum(found))
#!/usr/bin/env python from common import factorial, to_digits from itertools import count fs = list(factorial(n) for n in range(0, 10)) S = 0 for i in count(10): if i > 100000: break s = sum(fs[d] for d in to_digits(i)) if s == i: S += i print(S)
#!/usr/bin/env python from common import is_prime, to_digits for n1 in range(1000, 10000 - (3330 * 2)): n2 = n1 + 3330 n3 = n2 + 3330 d1 = to_digits(n1) d2 = to_digits(n2) d3 = to_digits(n3) if not (sorted(d1) == sorted(d2)): continue if not (sorted(d1) == sorted(d3)): continue if not is_prime(n1): continue if not is_prime(n2): continue if not is_prime(n3): continue s = sum([a * 10**k for k, a in enumerate(reversed(d1 + d2 + d3))]) print(s)
from common import to_digits from fractions import Fraction def remove_digit(d, l): if l[0] == d: return l[1] else: return l[0] nprod = 1 dprod = 1 for d in range(11, 100): for n in range(10, d): dd = to_digits(d) dn = to_digits(n) common = set(dd) & set(dn) if len(common) != 1: # We don't want empty sets or bigger than one (to avoid /0) continue digit = common.pop() if not digit: # Remove trivial examples continue n2 = remove_digit(digit, dn) d2 = remove_digit(digit, dd)
def dig(n): return sorted(to_digits(n))