https://www.acmicpc.net/problem/1629
import sys
def go(a, b):
if b == 0:
return 1
d = go(a, b // 2) % c
if b % 2 == 1:
return (d * d * a)
else:
return (d * d)
a, b, c = map(int, sys.stdin.readline().split())
answer = go(a, b) % c
print(answer)
3년 전 알고리즘 수업 때 시간에 분할 정복 파트 과제로 나온 문제. 그 때는 어려웠지만, 지금은 풀어버렸다.