
문제 설명
- 현실에서 사용하는 분수계산법을 프로그래밍으로 구현하는 문제입니다.
접근법
- A/B+C/D=(A∗D+B∗C)/B∗D입니다.
- 해당 문제에서 중요한 점은
기약분수
로 표현하는 것입니다.
기약분수
는 더 이상 나눌 수 없는 분수형태로 이는 최대공약수
와 밀접한 관련이 있습니다.
- 분모와 분자를 각각
최대공약수
로 나눈 값이 곧 기약분수
입니다.
정답
a,b = list(map(int,input().split(' ')))
c,d = list(map(int,input().split(' ')))
numerator = (b*c+a*d)
denominator = b*d
def GCD(x,y):
while y:
x,y = y,x%y
return x
gcd = GCD(numerator,denominator)
numerator = int(numerator/gcd)
denominator = int(denominator/gcd)
print(f"{numerator} {denominator}")