본문 바로가기

유클리드 호제법3

1735번: 분수 합 - 관련 사이트: https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 2개의 분수가 주어졌을 때, 두 분수의 합을 기약분수로 나타내는 문제이다. 1) 입력받은 두 분수의 합 계산 입력받은 분수: a/b, c/d 분자 = a * d + c * b 분모 = b * d 2) 계산된 분자, 분모의 최대공약수 계산: 유클리드 호제법 이용 3) 계산된 분자, 분모를 각각 최대공약수로 나눔 == 기약분수 #include using namespace std; int gcd(int a, int b) { return .. 2023. 6. 20.
13241번: 최소공배수 - 관련 사이트: https://www.acmicpc.net/problem/13241 13241번: 최소공배수 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다 www.acmicpc.net 자연수 A와 B의 최소공배수를 구하는 문제이다. "1934번: 최소공배수" 문제와 동일하지만, 유클리드 호제법으로 최대공약수를 구해야 한다는 조건이 있다. "1934번: 최소공배수" 의 두번째 풀이를 적용해주면 된다. 1) 유클리드 호제법을 이용하여 A, B 두 수의 최대공약수 확인 3) (A * B) /.. 2023. 6. 19.
유클리드 호제법 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 입력으로 두 수 m,n(m>n)이 들어온다. n이 0이라면, m을 출력하고 알고리즘을 종료한다. m이 n으로 나.. 2023. 6. 19.