🔗 문제
https://www.acmicpc.net/problem/1629
💻 풀이 및 코드
문제 유형 : 분할정복을 이용한 거듭제곱
A 를 B 번 곱한 값을 M 으로 나눈 값을 출력하라.
풀이
이곳에서 설명을 아주 잘 해놨다.
https://st-lab.tistory.com/237
느낀 점
전체 코드
import java.io.*;
import java.util.*;
public class Main_bj_1629_곱셈 {
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("res/input_bj_1629.txt"));
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int C = sc.nextInt();
System.out.println(func(A, B, C));
sc.close();
}
static long func(int A, int B, int C) {
if(B==1) {
return A%C;
}
long res = func(A, B/2, C);
res = res*res%C;
if(B%2==0) {
return res;
}else {
return res*A%C;
}
}
}
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[BOJ] 11444. 피보나치 수 6 - JAVA (0) | 2023.03.03 |
---|---|
[BOJ] 11401. 이항 계수 3 - JAVA (페르마의 소정리) (0) | 2023.02.28 |
[BOJ] 2615. 오목 - JAVA (0) | 2023.02.28 |
[BOJ] 1941. 소문난 칠공주 - JAVA (0) | 2023.02.24 |
[BOJ] 1914. 하노이 탑 - JAVA (0) | 2023.02.23 |