Point: 100.0
Time limit: 1.0s
Memory limit: 64 M
Input: stdin
Output: stdout
Author:  
Problem type
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text

Yêu cầu:

Bảo Châu đang học lớp 3, cô bé bắt đầu làm quen với những phép toán phân số. Hiển nhiên phép toán cộng trừ phân số khác hẳn với cộng trừ số tự nhiên. Cô ấy cộng hai phân số lại theo quy tắc quy đồng mẫu số \(a/b + c/d = (ad+bc)/bd\) rồi rút gọn dưới dạng phân số tối giản. Cô ấy khá bối rối trong việc tính toán này. Các bạn giúp cô ấy với nhé.

Dữ liệu:

  • Dòng đầu tiên ghi hai số nguyên dương a và b kiểu 64 bít để thể hiện phân số a/b

  • Dòng 2 ghi ghi hai số nguyên dương c và d kiểu 64 bít để thể hiện phân số c/d.

Kết quả:

  • Ghi ra phân số a/b + c/d dưới dạng tối giản

sample input

1 2
1 3

sample output

5 6

Hướng dẫn dùng struct:

#include <bits/stdc++.h>

using namespace std;
struct ps
{
    long long tu, mau;
};
void rutgon(ps &x)
{
    if(x.mau<0)
    {
        x.mau = -x.mau;
        x.tu = -x.tu;
    }
    long long tam = __gcd(x.tu, x.mau);
    x.tu/=tam, x.mau/=tam;
}
ps cong(ps x, ps y)
{
    ps t;
    t.mau = x.mau*y.mau;
    t.tu = x.tu*y.mau + x.mau*y.tu;
    rutgon(t);
    return t;
}
int main()
{
    //Các  lệnh cộng hai phân số ở đây
}