재귀 함수를 이용해서 문제를 쪼개서 풀수 있다. cal(10, 11) = cal(10, 5) * cal(10, 5) * 10 % 12
B가 홀수인 경우에는 cal(A, B/2) * cal(A,B/2) * A 로 A를 추가로 곱해줘야한다.
B가 짝수인 경우에는 cal(A, B/2) * cal(A,B/2) 를 해주면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int a,b,c;
int cal(int a, int b){
if(b == 1) return a % c;
int ret = cal(a, b/2);
ret = (ret * ret) % c;
if(b & 1) ret = (ret * a) % c;
return ret;
}
int main(){
cin >> a >> b >> c;
cout << cal(a,b);
}