본문 바로가기
728x90

확장 유클리드 호제법3

[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에서의 A의 덧셈역과 곱셈역을 구하시오. 단, 곱셈역을 구할 수 없으면 -1을 출력한다. 입력 첫 번째 줄에 N(2 ≤ N ≤ 1012)과 A(1 ≤ A < N)이 주어진다. 출력 첫 번째 줄에 A의 N에 대한 덧셈역과 곱셈역을 한 줄에 공백으로 구분하여 출력한다. # 정답 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) .. 2024. 4. 10.
Day-13 확장 유클리드 호제법 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를.. 2024. 4. 6.
[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가 주어진다. 출력 Ax+By=C를 만족하는 x, y를 공백으로 구분해 출력한다. 문제의 조건을 만족하는 (x, y)가 존재하지 않는 경우에는 -1을 출력한다. # 정답 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new In.. 2024. 4. 6.
728x90