반응형
요약
- 지수를 2진법으로 바꿈
- 밑을 제곱해서 올려가며 2진법에서 1일 때만 곱해줌
- 그냥 n번을 곱하면 복잡도 O(n)이나 이 방식은 O(log n)임
설명
def fast_pow(a, b):
ret = 1
while b:
if b%2:
ret *= a
a *= a
b >>= 1 # 혹은 b //= 2
return ret
print(fast_pow(2, 10))
파이썬 코드
- 밑 a와 지수 b를 입력받음
- b는 계속 2로 나눠주고, a는 계속 제곱을 시킴. b를 2로 나눈 값이 1일 때(2진수에서 해당 자리수가 1일때) 결과값에 제곱한 결과를 곱해줌.
반응형
'📝 알고리즘 > 수학' 카테고리의 다른 글
🧮 부분 집합, 멱집합 구하기 알고리즘 직접 구현! (2) | 2023.01.10 |
---|---|
🧮 조합 알고리즘 직접 구현! (2) | 2023.01.10 |
🧮 순열 알고리즘 직접 구현! (0) | 2023.01.10 |
[알고리즘, 원리] 유클리드 호제법 (0) | 2022.09.10 |
댓글