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
- 냥코 센세
- 소수
- SQL
- 딥러닝
- backpropagation
- mnist
- 합성곱 신경망
- 소인수분해
- c#
- 비샤몬당
- 수달
- Autoencoder
- 오일러 프로젝트
- 신경망
- 베이지안
- neural network
- 자전거 여행
- project euler
- Convolutional Neural Network
- deep learning
- 전처리
- bayesian
- CNN
- A Neural Algorithm of Artistic Style
- 히토요시
- 오토인코더
- 역전파법
- Python
- 역전파
- Gram matrix
Archives
- Today
- Total
통계, IT, AI
14. Longest Collatz sequence 본문
1. 개요
문제는 이곳에서 확인할 수 있다.
어떤 수열
예를 들어
증명되진 않았지만 모든 양의 정수인
2. Ver 1.0
이 문제의 특징은 메모이제이션(memoization)을 사용할 수 있다는 점이다. 즉,
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 | # -*- coding: utf-8 -*- sequence_length = dict () for n in range ( 2 , 1000000 ): if n in sequence_length: continue temp_n = n temp_sequence_length = dict () temp_sequence_length[n] = 1 while temp_n ! = 1 : if temp_n % 2 = = 0 : temp_n = temp_n / / 2 else : temp_n = 3 * temp_n + 1 # 찾고자 하는 수가 기존의 sequence에 존재하면 수를 누적시킨 후 종료한다. if temp_n in sequence_length: cnt = sequence_length[temp_n] stop_calc = True else : cnt = 1 temp_sequence_length[temp_n] = 0 stop_calc = False for k in temp_sequence_length: temp_sequence_length[k] + = cnt if stop_calc: break sequence_length.update(temp_sequence_length) # 1000000보다 큰 키는 삭제한 후 value를 기준으로 max key를 찾는다. sequence_length = {k: v for k, v in sequence_length.items() if k < 1000000 } max_k = max (sequence_length, key = sequence_length.get) print (max_k) print (sequence_length[max_k]) |
답은 837799이다.
'IT > PROJECT_EULER' 카테고리의 다른 글
17. Number letter counts (0) | 2017.01.12 |
---|---|
15. Lattice paths, 16. Power digit sum (0) | 2017.01.12 |
13. Large sum (0) | 2017.01.08 |
12. Highly divisible triangular number (0) | 2017.01.08 |
11. Largest product in a grid (0) | 2017.01.03 |
Comments