problem 34 https projecteuler netproblem34 145 is a curious number as 1 4 5 1 24 120 145 find the sum of all numbers which are equal to the sum of the factorial of their digits note as 1 1 and 2 2 are not sums they are not included returns the sum of the factorial of digits in n sumofdigitfactorial15 121 sumofdigitfactorial0 1 returns the sum of all numbers whose sum of the factorials of all digits add up to the number itself solution 40730 returns the sum of the factorial of digits in n sum_of_digit_factorial 15 121 sum_of_digit_factorial 0 1 returns the sum of all numbers whose sum of the factorials of all digits add up to the number itself solution 40730
from math import factorial

DIGIT_FACTORIAL = {str(d): factorial(d) for d in range(10)}


def sum_of_digit_factorial(n: int) -> int:
    
    return sum(DIGIT_FACTORIAL[d] for d in str(n))


def solution() -> int:
    
    limit = 7 * factorial(9) + 1
    return sum(i for i in range(3, limit) if sum_of_digit_factorial(i) == i)


if __name__ == "__main__":
    print(f"{solution() = }")