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
- 합성곱 신경망
- 수달
- 오일러 프로젝트
- Python
- project euler
- SQL
- bayesian
- 전처리
- 히토요시
- A Neural Algorithm of Artistic Style
- neural network
- 소인수분해
- 베이지안
- Gram matrix
- 비샤몬당
- backpropagation
- 신경망
- c#
- Convolutional Neural Network
- 소수
- 역전파법
- 자전거 여행
- Autoencoder
- mnist
- 딥러닝
- 오토인코더
- 역전파
- deep learning
- CNN
- 냥코 센세
Archives
- Today
- Total
통계, IT, AI
[PROJECT_EULER] 64. Odd period square roots 본문
문제는 이곳에서 확인할 수 있다.
모든 square root는 주기를 갖는 분수 꼴로 나타낼 수 있다고 한다. 문제의 예시와 같이 square root의 주기를 반환하는 함수를 작성하여 문제를 풀었지만 주석의 why? 부분은 왜 그것이 보장되는지 모르겠다.
import math
def f(k, a, b):
'''
b/(sqrt(k) - a) to C + (sqrt(k) - A)/B
return A, B, C
'''
d = (k - a ** 2)/b
assert int(d) == d # why?
d = int(d)
_a = [_a for _a in range(math.ceil(math.sqrt(k) + a - d), math.floor(math.sqrt(k) + a) + 1) if _a % d == 0]
assert len(_a) == 1 # why?
_a = _a[0]
return _a - a, d, _a // d
ans = 0
for k in range(2, 10000+1):
a = math.floor(math.sqrt(k))
b = 1
if a ** 2 == k:
continue
perm = []
while True:
a, b, c = f(k, a, b)
_key = f'{a}_{b}'
if _key in perm:
ans += 1 if len(perm) % 2 == 1 else 0
break
perm.append(_key)
ans
답은 1322이다.
'IT > PROJECT_EULER' 카테고리의 다른 글
[PROJECT_EULER] 63. Powerful digit counts (1) | 2023.03.23 |
---|---|
[PROJECT_EULER] 62. Cubic permutations (0) | 2023.03.22 |
[PROJECT_EULER] 61. Cyclical figurate numbers (0) | 2023.03.21 |
[PROJECT_EULER] 60. Prime pair sets (0) | 2023.03.11 |
[Proejct Euler] 59. XOR decryption (0) | 2017.07.29 |
Comments