반응형
리뷰
모듈러 연산을 통한 재귀 풀이
문제 풀이
- 모듈러 연산의 성질을 활용하여 재귀를 통해 값을 구하였다.
- 초기 입력받은 a, b, c를 재귀를 사용할 함수에 보내준다.
- a가 밑, b가 지수이므로 b가 0이 될때까지 실행을 하고 b가 0일 경우 a^b는 1이므로 1을 리턴해 준다.
- b가 0보다 클 경우 b를 0으로 나눈 값을 재귀 시킨다, 이후 짝수일 때는 a^(b/2) * a^(b/2)를 c로 나눈 나머지 값을 half로 정의, 홀수일 때는 짝수에서 나온 값 half에 밑 a를 한번 더 곱해준 후 c로 나눈 나머지 값을 half로 정의한다.
- 이후 half를 리턴해 주면 된다.
참고 사항
모듈러 연산 정보
- 덧셈: (a+b)%m=((a%m)+(b%m))%m
- 곱셈: (a×b)%m=((a%m)×(b%m))%m
- 거듭제곱: (a^b)%m=((a%m)^b)%m
정답 코드
import math
def prod(a, b, c):
if b == 0:
return 1
half = prod(a, b // 2, c)
half = (half * half) % c
if b % 2:
half = (half * a) % c
return half
a, b, c = map(int, input().split())
print(prod(a, b, c))
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 13549번 숨바꼭질 3 파이썬, C++ (0) | 2024.07.18 |
---|---|
백준 2153번 소수 단어 파이썬 (0) | 2024.07.18 |
백준 15663번 N과 M (9) 파이썬 (0) | 2024.07.17 |
백준 11725번 트리의 부모 찾기 파이썬 (0) | 2024.07.17 |
백준 14940 쉬운 최단거리 파이썬, C++ (1) | 2024.07.16 |