fbpx

Problema #3073 – repartitie – Rezolvari PBInfo

de Mihai-Alexandru

Enunț

Într-o școală sunt n clase a VII-a, fiecare de câte k elevi, și m clase a VIII-a, fiecare de câte p elevi. Directorul școlii vrea să facă o nouă repartizare a elevilor în clase astfel încât în fiecare clasă: a) să fie același număr de elevi; b) să fie doar elevi de clasa a VII-a sau doar elevi de clasa a VIII-a.

Cerința

Cunoscându-se valorile n, k, m și p, numere naturale nenule, scrieți un program pentru a determina x numărul de clase necesar acestei noi repartizări, noul număr y de clase a VII-a, respectiv z de clase a VIII-a, precum și numărul t maxim de elevi repartizați într-o clasă.

Date de intrare

Programul citește de la tastatură numerele naturale n, k, m și p, separate prin spații.

Date de ieșire

Programul va afișa pe ecran numerele naturale: x y z t, separate prin câte un spațiu.

Restricții și precizări

  • n, k, m, p, x, y, z, t ≤ 1.000.000

Exemplu

Intrare

4 30 5 27

Ieșire

17 8 9 15

Explicație

Pentru n=4, k=30, m=5, p=27, numărul de clase necesar acestei noi repartizări este x=17, dintre care vor fi y=8 clase a VII-a și z=9 clase a VIII-a, iar în fiecare clasă vor fi repartizați maxim t=15 elevi.

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

int cmmdc(int a , int b)
{
    while(b)
    {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int main()
{
    int n, k, m, p;
    cin >> n >> k >> m >> p;
    int ne7 = n * k;
    int ne8 = m * p;
    int x, y , z , t;
    t = cmmdc(ne7, ne8);
    y = ne7 / t;
    z = ne8 / t;
    x = y + z;
    cout << x << ' ' << y << ' ' << z << ' ' << t;
    return 0;
}
Comentarii

S-ar putea sa iti placa