* Computer Science/Project Euler

project euler 32. problem

soicem 2016. 8. 26. 16:31

1부터 n까지의 각 숫자를 한번씩만 써서 만들 수 있는 숫자를 팬디지털(pandigital)이라고 합니다.
예를 들면 15234는 1부터 5의 숫자가 한번씩만 쓰였으므로 1 ~ 5 팬디지털입니다.

7254라는 숫자는 그런 면에서 특이한데, 39 × 186 = 7254 라는 곱셈식을 만들 때 이것이 1 ~ 9 팬디지털이 되기 때문입니다.

이런 식으로 a × b = c 가 1 ~ 9 팬디지털이 되는 모든 c의 합은 얼마입니까?

(참고: 어떤 c는 두 개 이상의 (ab)쌍에 대응될 수도 있는데, 이런 경우는 하나로 칩니다)


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
30
31
32
33
34
35
36
37
38
39
40
def check(tmp):
    List = ['0''0''0''0''0''0''0''0''0''0']
 
    for i in range(0len(tmp)):
        idx = int(tmp[i])
        if tmp[i] == '0':
            return False
 
        if List[idx] == '0':
            List[idx] = tmp[i]
        elif List[idx] != '0':
            return False
    return True
            
def pandigital():
    CList = []
    for a in range(110000):
        for b in range(110000):
            c = a*b
            tmp = str(c) + str(a) + str(b)
            
            if len(tmp) == 9:
                #print tmp
                if check(tmp):
                    print "%d * %d = %d" % (a,b,c)
                    isExist = True
                    for i in CList:
                        if i == c:
                            isExist = False
                    if isExist:
                        CList.append(c)
    return CList
 
CList = pandigital()
Sum = 0
print CList
for element in CList:
    Sum += element
 
print "element Sum is %d" % Sum
cs

C:\Users\cse\Desktop>python test.py
4 * 1738 = 6952
4 * 1963 = 7852
12 * 483 = 5796
18 * 297 = 5346
27 * 198 = 5346
28 * 157 = 4396
39 * 186 = 7254
42 * 138 = 5796
48 * 159 = 7632
138 * 42 = 5796
157 * 28 = 4396
159 * 48 = 7632
186 * 39 = 7254
198 * 27 = 5346
297 * 18 = 5346
483 * 12 = 5796
1738 * 4 = 6952
1963 * 4 = 7852
[6952, 7852, 5796, 5346, 4396, 7254, 7632]
element Sum is 45228


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

project euler 34. problem  (0) 2016.08.29
project euler 33. problem  (0) 2016.08.26
project euler 30. problem  (0) 2016.08.25
project euler 29. problem  (0) 2016.08.25
project euler 28. problem  (0) 2016.08.24