Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오토인코더
- Convolutional Neural Network
- 소수
- Python
- bayesian
- 역전파
- CNN
- 소인수분해
- 냥코 센세
- mnist
- deep learning
- 신경망
- A Neural Algorithm of Artistic Style
- 자전거 여행
- 전처리
- project euler
- 딥러닝
- c#
- 수달
- neural network
- 히토요시
- 오일러 프로젝트
- Gram matrix
- 역전파법
- SQL
- 합성곱 신경망
- Autoencoder
- 비샤몬당
- 베이지안
- backpropagation
Archives
- Today
- Total
통계, IT, AI
32. Pandigital products 본문
1. 개요
문제는 이곳에서 확인할 수 있다. 7254는 39와 186의 곱으로 나타낼 수 있다. 즉
2. 구현
문제의 조건에 맞는 곱의 형태는 두가지 밖에 없다. 즉, 한자리 숫자와 네자리 숫자를 곱하여 네자리 숫자를 만드는 것과 두자리 숫자와 세자리 숫자를 곱하여 네자리 숫자를 만드는 경우 이외에는 문제의 조건에 맞지 않는다. 이를 이용하여 답을 구하자.
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # -*- coding: utf-8 -*- answer = [] # CASE 1: 1-digit multiply 4-digit for first_term in range ( 2 , 10 ): first_term_set = set ( str (first_term)) for second_term in range ( 1234 , 9877 ): second_term_set = set ( str (second_term)) if not len (second_term_set) = = 4 or \ first_term_set & second_term_set or \ '0' in second_term_set : continue result = first_term * second_term result_set = set ( str (result)) if not result_set & first_term_set and \ not result_set & second_term_set and \ not '0' in result_set\ and len (result_set) = = 4 and result < 10000 : print (first_term, second_term, result) answer.append(result) # CASE 2: 2-digit multiply 3-digit for first_term in range ( 12 , 99 ): first_term_set = set ( str (first_term)) if not len (first_term_set) = = 2 or \ '0' in first_term_set : continue for second_term in range ( 123 , 988 ): second_term_set = set ( str (second_term)) if not len (second_term_set) = = 3 or \ first_term_set & second_term_set or \ '0' in second_term_set : continue result = first_term * second_term result_set = set ( str (result)) if not result_set & first_term_set and \ not result_set & second_term_set and \ not '0' in result_set\ and len (result_set) = = 4 and result < 10000 : print (first_term, second_term, result) answer.append(result) print ( sum (( set (answer)))) |
답은 45228이다.
'IT > PROJECT_EULER' 카테고리의 다른 글
34. Digit factorials (0) | 2017.03.02 |
---|---|
33. Digit cancelling fractions (0) | 2017.03.01 |
31. Coin sums (0) | 2017.02.09 |
30. Digit fifth powers (0) | 2017.01.31 |
29. Distinct powers (0) | 2017.01.30 |
Comments