* Computer Science/Project Euler

project euler 38. problem

soicem 2016. 9. 6. 10:46

숫자 192에 1, 2, 3을 각각 곱합니다.

192 × 1 = 192
192 × 2 = 384
192 × 3 = 576

곱한 결과를 모두 이어보면 192384576 이고, 이것은 1 ~ 9 팬디지털(pandigital)인 숫자입니다. 이런 과정을 편의상 '곱해서 이어붙이기'라고 부르기로 합니다.

같은 식으로 9와 (1, 2, 3, 4, 5)를 곱해서 이어붙이면 918273645 라는 1 ~ 9 팬디지털 숫자를 얻습니다.

어떤 정수와 (1, 2, ... , n)을 곱해서 이어붙였을 때 얻을 수 있는 가장 큰 아홉자리의 1 ~ 9 팬디지털 숫자는 무엇입니까? (단 n > 1)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def isPandigital(n):
    List = [123456 ,789]
    
    if len(n) == 9:
        n = int(n)
        while n!=0:
            tmp = n % 10
            n /= 10
            if List[tmp-1!= 0:
                List[tmp-1= 0
            else:
                return False
    return True
 
List = [123456 ,789]
 
 
for i in range(110000):
    target = ''
    isDigitLen = False
    for j in List:
        if len(target) >= 9:
            if len(target) == 9:
                isDigitLen = True
            break
        target += str(i*j)
 
    if isDigitLen and isPandigital(target):
        print target
cs


C:\Users\soicem\Desktop\연습용 폴더>python test.py
918273645
192384576
219438657
267534801
273546819
327654981
523810476
536410728
538210764
543610872
635412708
643512870
672913458
679213584
685213704
692713854
726914538
729314586
732914658
769215384
792315846
793215864
823516470
835216704
852317046
853217064
865217304
926718534
927318546
932718654



'* Computer Science > Project Euler' 카테고리의 다른 글

project euler 40. problem  (0) 2016.09.22
project euler 39. problem  (0) 2016.09.20
project euler 36. problem  (0) 2016.09.01
project euler 목적.  (0) 2016.08.30
project euler 34. problem  (0) 2016.08.29