def dac(a, b, c): # a^b % c if b == 1: return a % c elif b % 2 == 0: # b가 짝수일 때 return (dac(a, b//2, c)**2) % c else: return ((dac(a, b//2, c)**2)*a) % c a, b, c = map(int, input().split()) print(dac(a, b, c)) 분할 정복 알고리즘이 사용되며, (a ^ b) % c 의 결과를 출력하기만 하면 되는 문제이다. 그러나 주어지는 입력값이 int의 최대값인 21억 정도로 매우매우 크다. 시간 제한도 0.5초로 매우 짧기 때문에 일반적인 연산으로는 시간 초과가 뜬다. 때문에 수학 공식을 이용하여 작은 단위로 분할하여 연산 횟수를 줄여서 계산해야 한다. ..