[백준] 1629. 곱셈

최대 1 분 소요

문제 링크

[백준] 1629. 곱셈


풀이 과정

거듭 제곱을 분할 정복을 이용하여 표현해서 풀 수 있었습니다.

제곱 횟수 B 가 주어지면, 반으로 계속 나누어 그 값을 얻어 본 계산에 사용하게 됩니다.

입력으로 4 1 2 와 같이 제곱 횟수가 한 번으로 주어지면 나머지 연산을 거치지 않고 바로 A를 리턴하기 때문에, 답을 출력하는 곳에 나머지 연산을 한 번 더 작성해줌으로써 예외를 처리할 수 있었습니다.


코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int A, B, C;
        A = sc.nextInt();
        B = sc.nextInt();
        C = sc.nextInt();

        System.out.println(pow(A, B, C) % C);
    }

    public static long pow(int A, int B, int C) {
        if (B == 1) return A;
        else {
            long half = pow(A, B / 2, C);
            if (B % 2 == 0) return half * half % C;
            else return half * half % C * A % C;
        }
    }
}

카테고리:

업데이트:

댓글남기기