본문 바로가기

CodingTEST

[백준 1629] 곱셈 (JAVA)

반응형

백준 1629번 문제 -  곱셈

 

1629번: 곱셈

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

www.acmicpc.net


문제 분석 

 


 

해결 포인트

 

  • 시간 부족 문제
  • 분할 정복 사용
  • 지수법칙 : 2 ^ 4 = 2 ^ 2 * 2 ^ 2 

  • 모듈러 성질 : 2 ^ 4 % c = ((2 ^ 2) % c * (2 ^ 2) % c 

 

참고 : https://st-lab.tistory.com/237

 

[백준] 1629번 : 곱셈 - JAVA [자바]

www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 문제 알고리즘 [접근 방법] 이 문제는 얼핏

st-lab.tistory.com


코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());

        long sum = pow(a, b, c) % c;

        bw.write(sum + "\n");
        bw.flush();
        bw.close();
    }

    public static long pow(int a, int b, int c) {
        if(b == 1)
            return a % c;

        long result = pow(a, b/2, c);
        if(b % 2 == 0) {
            return result * result % c;
        }
        return ((result * result) % c) * a % c;
    }
}
반응형

'CodingTEST' 카테고리의 다른 글

[백준 1991] 트리 순회(JAVA)  (0) 2024.01.16
[백준 1932] 정수 삼각형(JAVA)  (0) 2024.01.16
[백준 1149] RGB거리 (JAVA)  (0) 2024.01.14
[백준 16953] A → B (JAVA)  (0) 2024.01.14
[프로그래머스] 전화번호 목록 (JAVA)  (0) 2024.01.13