https://www.acmicpc.net/problem/1629
1629번: 곱셈
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
www.acmicpc.net
정답 풀이
a, b, c = map(int, input().split())
## a^b%c를 반환하는 함수
def solution(a, b):
# 어떤 수든 재귀를 타면 b==1이 되게 된다.
if b==1:
return a%c
ans = solution(a, b // 2) # 지수승 절반값의 %c한 값 호출
if b%2==0: # 짝수
return ans*ans%c
else: # 홀수
return ans*ans*(a%c)%c
# 공식상으로는 ans*ans*(a%c)%c지만 ans*ans*a%c 랑 같다.
# 나머지 연산 (a*b*c*d)%f 는 a,b,c,d를 각각 f로 나눈 나머지를 곱한뒤 f로 나눈 값이나, 몇개는 냅두고 몇개는 f로 나눈 나머지를 곱한 값을 f로 나눈값이나 같다.
print(solution(a,b))
출처: https://backtony.github.io/algorithm/2021/02/11/algorithm-boj-class4-7/
해석
자세한 설명은 링크에.
사실 완전히 이해하는데에는 실패했다..
'sw사관학교 정글 2기 > 02 이분탐색, 분할정복, 스택, 큐, 우선순위 큐' 카테고리의 다른 글
[큐, 시뮬레이션] 백준 3190번 뱀 with Python3 ★ (0) | 2021.08.16 |
---|---|
[분할정복, 스택] 백준 6549번 히스토그램에서 가장 큰 직사각형 with Python3 ★★★ (0) | 2021.08.14 |
[스택] 백준 10000번 원 영역 with Python3 ★★ (0) | 2021.08.14 |
[스택] 백준 2493번 탑 with Python3 (0) | 2021.08.14 |
[스택] 백준 9012번 괄호 with Python3 (0) | 2021.08.13 |
댓글