알고리즘 도전기 - 8

김치전사·2022년 3월 16일
0

알고리즘 도전기

목록 보기
8/89

1629 곱셈

문제

자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.

출력

첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다.

예제 입력

10 11 12

예제 출력

4

코드

import java.util.*;

public class Main {

    public static long C;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long A = scanner.nextLong();
        long B = scanner.nextLong();
        C = scanner.nextLong();

        System.out.println(multiple(A,B));
    }

    public static long multiple(long A, long B){
        if(B==1){
            return A%C;
        }

        long temp = multiple(A,B/2);

        if(B%2==1){
            return (temp*temp%C)*A%C;
        }
        return temp*temp%C;
    }
}
profile
개인공부 블로그입니다. 상업적 용도 X

0개의 댓글