두 수를 입력받아 거듭제곱을 리턴해야 합니다.
let output = power(3, 40);
console.log(output); // --> 19334827
function power(base, exponent) {
/*
거듭제곱
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8 = 2^2 * 2
2^4 = 16 = 2^2 * 2^2
2^5 = 32 = 2^2 * 2^2 * 2
2^6 = 64
*/
if(exponent === 0) return 1;
const newExpo = Math.floor(exponent / 2);
// 재귀 돌리기
const temp = power(base, newExpo);
const result = temp * temp % 94906249;
/*
base = 2, exponent = 5
newExpo = 2
temp = power(2, 2) * power(2, 2) % 94906249
power(2, 2)일때 newExpo = 1
temp = power(2, 1) * power(2, 1) % 94906249
power(2, 1)일때 newExpo = 0
temp = power(2, 0) * power(2, 0) % 94906249
= 1 * 1 % 94906249
= 1
*/
if (exponent % 2 === 1) return (base * result) % 94906249;
else return result;
}