158. 분수 합

아현·2021년 7월 8일
0

Algorithm

목록 보기
160/400
post-thumbnail

백준




1. 유클리드 호제법


import sys
input = sys.stdin.readline

def gcd(a, b):
    if a >= b:
        if a % b == 0:
            return b
        else:
            return gcd(b, a % b)
    elif a < b:
        if b % a == 0:
            return a
        else:
            return gcd(a, b % a)

'''
def gcd(a, b):
  while a % b != 0:
    mod = a % b
    a = b
    b = mod
  return b
'''

a, b = map(int, input().split())
c, d = map(int, input().split())

p = a * d + b * c; #분자
q = b * d; #분모

g = gcd(p, q);
 
print(p//g, q//g)


1) 분수를 더한다. (분모 통일을 위해 크로스로 곱해줌)

2) 분자와 분모의 최대공약수(GCD)를 구한다.

3) 분자와 분모를 GCD로 나누어준다.



2. C++



#include <cstdio>

int gcd(int a, int b){
  if(b == 0) return a;
  else return gcd(b, a % b);
}

int main(){
  int a, b, c, d;
  int p, q, g;
  scanf("%d%d%d%d", &a, &b, &c, &d);
  p = a * d + b * c;
  q = b * d;

  g = gcd(p, q);

  printf("%d %d", p / g, q / g);
}

profile
Studying Computer Science

0개의 댓글