Dev.baelanche

[백준 1629] 곱셈 본문

Data Structure & Algorithm/PS - JAVA

[백준 1629] 곱셈

baelanche 2019. 5. 3. 19:59
반응형

 

 

x제곱 하기에 수가 너무 크므로 분할하는 방법으로 접근해야 한다.

B를 2로 계속 나누어 최대한 작은 수로 만들고 매 연산마다

 

(A*B)%C = ((A%C)*(B%C))%C

 

를 이용하여 수를 더 작게 만들어준다.

 

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        
        long ans = 1;
        long mul = a % c;
        
        while(b>0) {
            if(b%2 == 1) {
                ans *= mul;
                ans %= c;
            }
            mul = ((mul % c) * (mul % c)) % c;
            b /= 2;
        }
        System.out.println(ans);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 1992] 쿼드트리  (0) 2019.05.03
[백준 1780] 종이의 개수  (0) 2019.05.03
[백준 1713] 후보 추천하기  (0) 2019.04.27
[백준 2823] 유턴 싫어  (2) 2019.04.27
[백준 9324] 진짜 메세지  (0) 2019.04.27
Comments