책/Do it! 알고리즘 코딩 테스트 자바 편
Day-13 확장 유클리드 호제법
댈팽이
2024. 4. 6. 16:42
728x90
1. 확장 유클리드 호제법
- 확장 유클리드 호제법은 방정식의 해를 구하기 위해 사용된다.
- 해를 구하고자 하는 방정식은 ax + by = c 이다.
- 위 방정식은 c가 a, b의 최대 공약수의 배수인 경우에만 정수해를 가진다.
- 즉, c의 최솟값이 GCD(a, b)이다.
2. 확장 유클리드 호제법 구현
- a와 b의 최대 공약수를 구해 c를 gcd로 둔다.
- a, b로 유클리드 호제법을 반복 실행하며 몫과 나머지를 저장한다.
나머지가 0이 될 때까지 반복한다. - 반복으로 구한 나머지와 몫을 이용하여 x = y', y = x' - y' * q를 계산한다.
x', y'는 이전 x, 이전 y를 의미하고, q는 현재 보고 있는 몫을 의미한다.
처음 시작하는 x, y는 x', y'를 1, 0으로 설정한다. - 구한 x, y에 c를 a와 b의 최대 공약수로 나눈 몫을 곱하여 해를 구한다.
3. 예제 문제
[21568] Ax+By=C (JAVA)
# 문제 설명 A, B, C가 주어졌을 때, Ax+By=C를 만족하는 (x, y)중에서 다음을 만족하는 것을 아무거나 찾아보자. x, y는 정수 1,000,000,000 ≤ x, y ≤ 1,000,000,000 입력 첫째 줄에 정수 A, B, C가 주어진다. 출
spicyrisotto.tistory.com
[14565] 역원(Inverse) 구하기 (JAVA)
# 문제 설명 집합 Zn을 0부터 n-1까지의 정수 집합이라고 하자. Zn ∋ a, b, c 일 때, (a+b) mod n = 0이면 b는 a의 덧셈역이라고 하고 (a*c) mod n = 1이면 c는 a의 곱셈역이라고 한다. 정수 N, A가 주어졌을 때 Zn
spicyrisotto.tistory.com
728x90