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 |
Tags
- 소수
- SQL
- neural network
- 비샤몬당
- A Neural Algorithm of Artistic Style
- 오토인코더
- 오일러 프로젝트
- mnist
- 역전파법
- 히토요시
- 소인수분해
- 전처리
- 수달
- 냥코 센세
- 베이지안
- deep learning
- backpropagation
- 역전파
- CNN
- bayesian
- 딥러닝
- c#
- Convolutional Neural Network
- 자전거 여행
- Python
- 신경망
- Gram matrix
- 합성곱 신경망
- project euler
- Autoencoder
Archives
- Today
- Total
통계, IT, AI
32. Pandigital products 본문
1. 개요
문제는 이곳에서 확인할 수 있다. 7254는 39와 186의 곱으로 나타낼 수 있다. 즉 \(39 \times 186=7254\)이다. 이 수식에는 1부터 9까지의 숫자가 한번씩만 사용되었다. 7254와 같이, 1부터 9까지의 숫자를 한번씩만 사용하여 곱의 형태로 나타낼 수 있는 모든 숫자의 합을 구하는 것이 목표이다.
2. 구현
문제의 조건에 맞는 곱의 형태는 두가지 밖에 없다. 즉, 한자리 숫자와 네자리 숫자를 곱하여 네자리 숫자를 만드는 것과 두자리 숫자와 세자리 숫자를 곱하여 네자리 숫자를 만드는 경우 이외에는 문제의 조건에 맞지 않는다. 이를 이용하여 답을 구하자.
# -*- 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