It's easy, if you try

[백준/boj] 1629: 곱셈 (Java) / 분할정복 본문

알고리즘/자바(Java)

[백준/boj] 1629: 곱셈 (Java) / 분할정복

s5he2 2021. 2. 21. 16:13
반응형

문제

 

1629번: 곱셈

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

www.acmicpc.net

풀이

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

public class Main {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer st;
	static long A, B, C;

	public static void main(String[] args) throws Exception {
		st = new StringTokenizer(br.readLine());
		A = Long.parseLong(st.nextToken());
		B = Long.parseLong(st.nextToken());
		C = Long.parseLong(st.nextToken());

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

	private static long multiple(long b) {
		if (b == 1)
			return A % C;

		long value = multiple(b/2) % C;
		if (b % 2 == 1) {
			return value * value % C * A % C;
		} else {
			return value * value % C;
		}
	}
}
반응형
Comments