JAVA_LeetCode 372_Super Pow 풀이 class Solution { public int superPow(int a, int[] b) { // 1의 거듭제곱은 바로 반환 if(a == 1) return 1; int mod = 1337, res = 1; // 처음에 a를 1337로 나눈 나머지를 기준으로 계산, 숫자 범위 작게 유지 a %= mod; // 배열 b를 뒤에서부터 순회 (지수의 각 자리 숫자부터 처리) for(int i = b.length - 1; i >= 0; i--){ // 현재 자리 숫자 b[i]만큼 a를 거듭제곱하여 결과에 곱함(mod 1337) res = (int)((long)res * powmod(a, b[i], mod) % mod); // 다음 자리 자릿값 위치를 맞추기 위해 a를 10제곱함(mod 1337) a = powmod(a, 10, mod); } return res; } // 이진 거듭제곱 함수: 빠르게 (base^exp) % mod ...
원문 링크 : JAVA_LeetCode 372_Super Pow