😎풀이

  1. 모듈러 상수 정의 1,337
  2. 모듈러를 통해 각 단계별, 정수 최댓값 초과를 방지하는 제곱함수 power 정의
  3. 12^123은 12^120 * 12^3 임을 이용하여 자릿수 별로 제곱한 결과를 재귀형식으로 누적하여 반환
const MOD = 1337
function superPow(a: number, b: number[]): number {
    if(b.length <= 0) return 1
    const lastDigit = b.pop()
    const partA = power(superPow(a, b), 10)
    const partB = power(a, lastDigit)
    return partA * partB % MOD
};

function power(a: number, b: number) {
    const modA = a % MOD
    let result = 1
    for(let i = 0; i < b; i++) {
        result = (result * modA) % MOD
    }
    return result
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글