fbpx

Problema #390 – SPFractii – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dau 4 numere naturale a b c d, reprezentând fracţiile a/b şi c/d. Calculaţi suma şi produsul celor două fracţii, aduse la forma ireductibilă.

Date de intrare

Programul citește de la tastatură numerele a b c d.

Date de ieşire

Programul afișează pe ecran numerele m n, reprezentând numărătorul şi numitorul sumei celor două fracţii, redusă la forma ireductibilă, iar pe a doua linie numerele p q, reprezentând numărătorul şi numitorul produsului celor două fracţii, redus la forma ireductibilă.

Restricţii şi precizări

  • 1 ≤ a, b, c, d ≤ 10000

Exemplu

Intrare

1 2 4 3

Ieșire

11 6
2 3

Explicație

Suma fracţiilor 1/2 şi 4/3 este 11/6, iar produsul este 2/3.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    int cb = b, cd = d;
    while(b){
        int r = d % b;
        d = b;
        b = r;
    }
    int cmmdc1 = d;
    b = cb, d = cd;
    int cmmmc1 = b / cmmdc1 * d;
    int ca = a, cc = c;
    a = a * (cmmmc1/b);
    c = c * (cmmmc1/d);
    int x1 = a + c;
    int x2 = cmmmc1;
    int cx1 = x1;
    int cx2 = x2;
    while(x2){
        int r = x1 % x2;
        x1 = x2;
        x2 = r;
    }
    cout << cx1 / x1 << ' ' << cx2 / x1 << endl;
    a = ca;
    c = cc;
    x1 = a * c;
    x2 = b * d;
    cx1 = x1;
    cx2 = x2;
    while(x2){
        int r = x1 % x2;
        x1 = x2;
        x2 = r;
    }
    cout << cx1 / x1 << ' ' << cx2 / x1 << endl;
    return 0;
}
Comentarii

S-ar putea sa iti placa