통계, IT, AI

34. Digit factorials 본문

IT/PROJECT_EULER

34. Digit factorials

Harold_Finch 2017. 3. 2. 22:27

1. 개요

문제는 이곳에서 확인할 수 있다. 어떤 수는 각 자리의 factorial의 합으로 나타낼 수 있다. 예를 들면, 1451!+4!+5!와 같다. 이러한 특징을 갖는 모든 수의 합을 구하는 것이 목표이다.


2. 구현

문제에 조건에 의하여 검사해야 할 숫자에는 상한선이 있다. 즉, n자리 숫자 중 가장 작은 수인 10n1n자리 숫자로 만들 수 있는 가장 큰 값인 9!n보다 작은 경우만 검사하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: utf-8 -*-
import math as m
 
n = 1
fact_9 = m.factorial(9)
while 10**(n-1) < fact_9*n:
    n += 1
     
answer = 0
for i in range(10, fact_9*n):
 
    if sum(m.factorial(int(j)) for j in str(i)) == i:
        print(i)
        answer += i
print('ANSWER: ', answer)

답은 40730이다.

'IT > PROJECT_EULER' 카테고리의 다른 글

36. Double-base palindromes  (0) 2017.04.09
35. Circular primes  (0) 2017.03.19
33. Digit cancelling fractions  (0) 2017.03.01
32. Pandigital products  (0) 2017.02.26
31. Coin sums  (0) 2017.02.09
Comments