def gcd(a,b):
while b !=0:
a, b = b, a%b
return a
def lcm(a, b):
return a * b // gcd(a, b)
a,b = map(int, input().split())
c,d = map(int, input().split())
f = b * d
e = a*d + c * b
gcd_value = gcd(f,e)
f //= gcd_value
e //= gcd_value
print(e,f)
처음 문제를 접근했을 때 같은 방식이였지만 최대 공약수로 나누는 방식을 달리하였다. 한번에 값을 도출할려니 되지 않았다.
분자1 / 분모1
분자2 / 분모2
가 있을 때
더한 값의 결과를 분자3 / 분모3 이라고 했을 때 분수3을 구하는 과정은 다음과 같다
분모3 = 분모1 분모2
분자3 = 분자1 분모2 + 분자2 * 분모1
후에 기약분수로 바꾸면 되는 문제이다.
계산 후 기약 분수로 바꿔주기 위해서 분자3과 분모3의 최대 공약수를 구해 각각 나눠주면 된다.
gcd 함수를 이용하여 최대 공약수를 구하고 구한 분자3과 분모3에 각각 나눠주었다.