문제링크:https://www.acmicpc.net/problem/1629
다루는 주제: 분할 정복
import sys
A, B, C = map(int, sys.stdin.readline().split())
# A * A * A * A ... * A % C로 문제를 풀고자 했으면 시간 초과
# A**B%C를 (A**B//2) * (A**B//2) * C 이런식으로 곱셈 계산을 최소화
def calc(a, b):
if b == 1:
return a % C
else:
temp = calc(a, b // 2) # ex) 10^10 == 10^5*10^5
if b % 2 == 0: # b가 짝수일때 계산식
return temp * temp % C
else: # b가 홀수일떄 계산식
return temp * temp * a % C
print(calc(A, B))
'Algorithm > 백준(파이썬)' 카테고리의 다른 글
백준 10830 파이썬(Python) 문제풀이 행렬제곱 (0) | 2023.04.17 |
---|---|
백준 6549 파이썬(Python) 문제풀이 히스토그램에서 가장 큰 직사각형 (0) | 2023.04.17 |
백준 2630 파이썬(Python) 문제풀이 색종이 만들기 (0) | 2023.04.16 |
백준 8983 파이썬(Python) 문제풀이 사냥꾼 (0) | 2023.04.16 |
백준 2470 파이썬(Python) 문제풀이 두 용액 (0) | 2023.04.15 |