본문 바로가기
알고리즘

C++ 기약분수

by Chars4785 2019. 1. 10.

입력


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


출력


첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 공백으로 구분하여 순서대로 출력한다.



예시


2 7
3 5
31 35



#include <iostream>
#include <vector>

using namespace std;

int getGCD(int a,int b)
{
int GDC;

while(1)
{
int r = a % b;

if( r == 0)
{
GDC = b;
break;
}

a = b;
b = r;
}

return GDC;
}

int getLCM(int A,int B,int GDC)
{
int LCM;
LCM = (A/GDC) * (B/GDC) * GDC;
return LCM;
}

int main() {


int fraction[2][2];

for(int i =0;i<2;i++)
for(int j=0;j<2;j++)
cin >>fraction[i][j];

int LCM = getLCM(fraction[0][1],fraction[1][1]
,getGCD(fraction[0][1],fraction[1][1]));
int result = fraction[0][0]*(LCM / fraction[0][1])
+fraction[1][0]*(LCM / fraction[1][1]);
int GCD = getGCD(result,LCM);
result /= GCD;
LCM /= GCD;

cout<< result<<" "<< LCM;


return 0;
}



'알고리즘' 카테고리의 다른 글

C++ 재귀 함수 ( 거듭제곱 )  (0) 2019.01.10
C++ 버블정렬  (0) 2019.01.10
C++ 파스칼 삼각형  (0) 2019.01.07
C++ 피라미드  (0) 2019.01.07
C++ 반장 선거  (0) 2019.01.04

댓글