티스토리 뷰
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
문제 이해
해당 문제는 분수의 합을 계산 하는 문제이다.
여기서 알아야 할 점은 유클리드 호제법을 이용해야 한다.
다음을 참조하면 좋다.
유클리드 호제법이란? | Lonpeach Tech
개념
tech.lonpeach.com
풀이
단순히 분수를 합하고 유클리드 호제법을 적용하면 된다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int C = Integer.parseInt(st.nextToken());
int D = Integer.parseInt(st.nextToken());
int numerator = A * D + B * C;
int denominator = B * D;
int mod = gcd(numerator, denominator);
numerator /= mod;
denominator /= mod;
bw.write(numerator + " " + denominator + "\n");
bw.flush();
bw.close();
br.close();
}
// 유클리드 호제법
public static int gcd(int a, int b) {
// a가 b보다 큰 경우에 대해서 유클리드 호제법 수행.
if (a <= b) {
int temp = a;
a = b;
b = temp;
}
if (b == 0) {
return a;
}
return gcd(b , a % b);
}
}