백준 1735 - 분수 합

카테고리 없음 2019. 8. 12. 22:37

    #include 
    using namespace std;
    


    int main()
    {
        int N, M, O, P;
        cin >> N >> M >> O >> P;
        int temp1, temp2;
        temp1 = (N * P) + (M * O);
        temp2 = M * P;
        int res1 = temp1;
        int res2 = temp2;
        
        if (temp1 < temp2)
        {
            int temp3 = temp1;
            temp1 = temp2;
            temp2 = temp3;
        }

        while (temp1 % temp2 != 0)
        {
            int temp3;
            temp3 = temp1 % temp2;
            temp1 = temp2;
            temp2 = temp3;
        }
        
        cout << res1 / temp2 << " " << res2 / temp2;
    }
    

 

유클리드 호제법이란 X%Y = R -> Y%R = R2 -> R%R2 = R3...를 반복하여 나머지가 0이 될 때 나온 나머지가 최대 공약수라는 공식이다. 이를 통해 나온 최대공약수를 입력받는 분자,분모에 나누는 수로 쓰면 됨.