<문제 링크>
https://www.acmicpc.net/problem/1629
<정답 코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 분할 정복(DAC)로 거듭제곱 계산하는 함수
def dac(base, ex, mod):
# base : 밑, ex : 지수, mod : 나누는 수
if ex == 0:
return 1
elif ex == 1:
return base % mod
# 분할 : 지수를 절반으로 나누기
half_ex = dac(base, ex//2, mod)
half_ex = (half_ex * half_ex) % mod
# 지수가 홀수인 경우 추가 계산
if ex % 2 == 0:
return half_ex
else:
return (half_ex * base) % mod
a, b, c = list(map(int, input().split()))
print(dac(a, b, c))
|
cs |
분할 정복(Divide and Conquer, DAC)으로 거듭제곱 계산 시간 단축