상세 컨텐츠

본문 제목

< 백준 BaekJoon : 1735번 분수 합> C++

C++/Baekjoon

by J2on 2024. 1. 10. 23:36

본문

문제

https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net

 

 

코드

#include <iostream>
using namespace std;

void swap(int &numA, int &numB) {
  int temp = numA;
  numA = numB;
  numB = temp;
}
int findGcd(int numA, int numB) {
  int numC; // 나머지
  while (1) {
    numC = numA % numB;

    if (numC == 0)
      break;

    swap(numA, numB);
    numB = numC;
  }

  return numB;
}

void makeReducedFraction(long long int& numA, long long int& numB){
  int numGcd;
  while(1){
    numGcd = findGcd(numA, numB);
    if(numGcd == 1) break;

    numA /= numGcd;
    numB /= numGcd;
  }
}


int main() {
  int numA, numB, numC, numD;

  cin >> numA >> numB >> numC >> numD;

  long long int numChild, numParent;
  numChild = (numA * numD) + (numB * numC);
  numParent = numB * numD;
  
  makeReducedFraction(numChild, numParent);
  cout << numChild << ' ' << numParent;
  
}

 

 

분수의 합 만들기 => 기약분수 만들기

 

기약분수 어떻게 만들었냐??

=> 최소 공배수가 1이 될 때까지 최소공배수로 나눠서 만들기

 

 

관련글 더보기

댓글 영역