일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nontrivial solution
- Big-Oh 예제
- linear dependence
- 빅오 표기법
- Big Theta
- 코틀린 Hello World!
- homogeneous linear system
- matrix trnasformations
- includepdf
- 배열 섞기
- 이진 탐색
- python
- nonhomogeneous linear system
- itertools
- 랜덤 순서 배열
- NumPy
- 재귀함수
- Big-O 예제
- Big-Oh notation
- recursive algorithms
- 알고리즘 분석의 실례
- trivial solution
- 빅세타
- 일차변환
- 코틀린 시작하기
- matrix fo a linear transformation
- Big Omega
- 빅오메가
- 페이지 겹칩
- one-to-one
- Today
- Total
코딩 연습
프로젝트 오일러 135번 본문
Given the positive integers x,y, and z, are consecutive terms of an arithmetic progression, the least value of the positive integers n, for which the equation, x2−y2−z2=n, has exactly two solutions is n=27:342−272−202=122−92−62=27 It turns out that n=1155 is the least value which has exactly ten solutions.
How many values of n less than one million have exactly ten distinct solutions?
자연수 x,y,z 가 등차수열을 이룰 때, 방정식 x2−y2−z2=n 이 2 개의 해를 갖기 위한 최소의 자연수 n 은 27 이다. 342−272−202=122−92−62=27 또한 n=1155 은 방정식이 10개의 해를 갖기 위한 자연수 n의 최솟값이다.
n<106 에서 위 방정식이 10 개의 해를 갖는 n 은 몇 개 있을까?
'등차수열을 이루는 세 수' 라는 문구가 문제가 등장하면 세 수를 a−d,a,a+d (단, a,d 는 정수 a>d)로 두고 문제를 풀라는 얘기를 고등학교 수학 시간에 귀에 못이 박히게 들었을 것이다. 여기서도 예외는 없다.
(a+d)2−a2−(a−d)2=n
4ad−a2=n
a(4d−a)=n
이때 d 가 정수이므로 4d−a=b 라고 하면 d=a+b4 에서 a+b 는 4 의 배수가 되어야 한다. 또한 a−d=a−a+b4>0 이어야 하므로 3a>b 이어야 한다.
이 두 가지 조건을 만족시키는 a,b 의 순서쌍을 찾으면 된다.
파이썬을 이용한 코드를 보면 다음과 같다.
result = [0] * (10 ** 6) for a in range(1, 10 ** 6): b = 4 - (a % 4) while a * b < 10 ** 6: if 3 * a > b: result[a * b] += 1 b += 4 print(result.count(10))
먼저 길이가 100000+1 인 리스트 result를 만들어 모든 성분을 0 으로 한다. a 를 1 부터 1000000 까지 변화시키고, b 의 초기값을 a+b 가 4 의 배수가 되는 최소의 자연수로 결정한다. 그리고 b 는 4 씩 증가시면서 계속 a+b 가 4 의 배수가 되도록 한다. b 는 ab<106 범위에서만 생각하면 된다. 이런 중에 3a>b 인 조건을 만족시킨다면 result[ab] 요소를 1 씩 증가시킨다.
마지막에 result 의 요소 중 그 값이 10인 것들만 카운트하면 답을 구해낼 수 있다.
'project euler with python' 카테고리의 다른 글
프로젝트 오일러 137번 (0) | 2016.03.15 |
---|---|
프로젝트 오일러 136번 (0) | 2016.03.15 |
프로젝트 오일러 134번 (0) | 2016.03.15 |
프로젝트 오일러 133번 (0) | 2016.03.15 |
프로젝트 오일러 132번 (0) | 2016.03.15 |