https://www.acmicpc.net/problem/1735
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
해석 및 팁
이 문제는 최소공배수만 구할 수 있으면 쉽게 풀 수 있습니다. 유클리드 호제법에 따라 두수 a와 b가 주어졌을 때 최소공배수는 a * b / 최대공약수이므로 최대공약수를 구하면 됩니다. 최소공배수를 구했으면 두 분수의 분모를 최소공배수로 맞추어서 더해줍니다. 그다음 분자와 분모의 최대공약수를 구해서 나누어주면 되는 문제입니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
int down = b * d / gcd(b, d);
int up = (a * (down / b) + c * (down / d));
int n = gcd(down, up);
down /= n;
up /= n;
System.out.println(up+" "+down);
}
static int gcd(int x, int y) {
if(y == 0) return x;
return gcd(y, x % y);
}
}
'백준' 카테고리의 다른 글
백준 10973 이전 순열(Java) (0) | 2023.02.03 |
---|---|
백준 17626 Four Squares(Java) (0) | 2023.02.03 |
백준 1449 수리공 항승(Java) (0) | 2023.02.03 |
백준 11478 서로 다른 부분 문자열의 개수(Java) (0) | 2023.02.03 |
백준 1935 후위 표기식2(Java) (0) | 2023.02.03 |