Rezolvare completă PbInfo #2771 Covorul

Cerința

Mama vrea să acopere cu covoare o cameră cu lungimea de n metri și lățimea de m metri. Ea are la dispoziție oricâte covoare în formă de pătrat, de orice dimensiune, număr natural și respectă următoarele reguli:

  • fiecare covor plasat are laturile paralele cu laturile camerei;
  • covoarele așezate nu se suprapun;
  • de fiecare dată se folosește cel mai mare covor care poate fi ales în acel moment;
  • de fiecare dată covorul ales se plasează în așa fel încât zona neacoperită încă să fie un dreptunghi.

Știind dimensiunile camerei să se determine care este dimensiunea maximă a unui covor folosit și numărul total de covoare folosite.

Date de intrare

Programul citește de la tastatură numerele n și m, reprezentând dimensiunile camerei.

Date de ieșire

Programul va afișa pe ecran numerele L și N reprezentând în ordine dimensiunea maximă a unui covor folosit și numărul total de covoare folosite.

Restricții și precizări

  • 1 ≤ n,m ≤ 1000000000
  • dimensiunile covoarelor sunt numere naturale nenule

Exemplul 1

Intrare

10 3

Ieșire

3 6

Explicație

Camera are forma următoare:

Se folosesc 3 covoare de latură 3 și 3 covoare de latură 1. Dimensiunea maximă este 3. O modalitate de așezare a covoarelor este:

Exemplul 2

Intrare

1 100

Ieșire

1 100

Explicație

Se folosesc 100 covoare de latură 1. Dimensiunea maximă este 1.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Covorul:

#include <iostream>

using namespace std;

unsigned long long n,m,nc;

int main(){
    cin>>n>>m;
    cout<<min(n,m)<<' ';
    if(n==m){
        cout<<1;
        return 0;
    }
    while(n>1||m>1){
        if(n>m){
            nc+=n/m;
            n-=m*(n/m);
        }
        else {
            nc+=m/n;
            m-=n*(m/n);
        }
    }
    cout<<nc;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2771 Covorul

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2771 Covorul de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!