유블로그

BOJ 1629 곱셈 Java 본문

알고리즘

BOJ 1629 곱셈 Java

yujeong kang 2021. 6. 10. 16:02

BOJ 1629 곱셈 Java

 

https://www.acmicpc.net/problem/1629

 

1629번: 곱셈

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

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		long A = Integer.parseInt(st.nextToken());
		long B = Integer.parseInt(st.nextToken());
		long C = Integer.parseInt(st.nextToken());
	
		System.out.println(power(A % C, B, C));
	}
	
	static long power(long a, long b, long c) {
		if(b == 1) return a % c;
		
		long half = power(a, b/2, c) % c;
		
		if(b % 2 == 0) {
			return (half * half) % c;
		}
		return (((half * half) % c) * a) % c;
	}
}

 

3^4 = 3^2 * 3^2

3^5 = 3^2 * 3^2  * 2

임을 이용한 문제..

 

 

 

'알고리즘' 카테고리의 다른 글

BOJ 13549 숨바꼭질 3 java  (0) 2021.06.14
BOJ 10026 적록색약 Java  (0) 2021.06.14
BOJ 1520 내리막길 Java  (0) 2021.06.10
BOJ 1022 소용돌이예쁘게출력하기 Java  (0) 2021.06.06
[Java] BOJ 17609 회문  (0) 2021.05.05