0378 - Pavare

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Curtea bunicului este de formă dreptunghiulară cu dimensiunile cunoscute. Bunicul dorește pavarea curții cu plăci de piatră. Firma furnizoare produce plăci de piatră de formă pătrată, de orice dimensiune, iar bunicul dorește să folosească plăci de o singură dimensiune, astfel încât să folosească cât mai puține plăci. NU este posibilă tăierea plăcilor de piatră, iar curtea trebuie pavată în întregime.

Cunoscând dimensiunile curții, determinați numărul minim de plăci cu care poate fi pavată curtea și dimensiunea acestora.

Date de intrare[edit | edit source]

Programul citește de la tastatură două numere naturale dim1 dim2, reprezentând dimensiunile curții.

Date de ieşire[edit | edit source]

Programul afișează pe ecran numerele numar_placi și dim_max, separate prin exact un spațiu, reprezentând numărul minim de plăci cu care poate fi pavată curtea și dimensiunea acestora.

Restricții și precizări[edit | edit source]

  • dim1, dim2 ∈ Ν
  • 1 ⩽ dim1, dim2⩽ 1.000.000.000

Exemplu1[edit | edit source]

Intrare
12 16
Ieșire
Datele de intrare corespund restricțiilor impuse.
12 4

Explicație[edit | edit source]

Dimensiunea maximă plăcilor cu care se poate pava curtea este 4. Se vor folosi 12 plăci.

Exemplu2[edit | edit source]

Intrare
26 8
Ieșire
Datele de intrare corespund restricțiilor impuse.
52 2

Explicație[edit | edit source]

Dimensiunea maximă plăcilor cu care se poate pava curtea este 2. Se vor folosi 52 plăci.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> import math


def validare_date(dim1, dim2):

   flag = False
   if 0 <= int(dim1) < 1_000_000_000 and 0 <= int(dim2) < 1_000_000_000:
       flag = True
   return flag


def pavare_curte(dim1, dim2):

   if dim1 < dim2:
       dim1, dim2 = dim2, dim1
   cmmdc = math.gcd(dim1, dim2)
   dim_max = cmmdc
   numar_placi = dim1 * dim2 // (dim_max ** 2)
   print(numar_placi, dim_max)


if __name__ == '__main__':

   dim1, dim2 = map(int, input().split())
   if validare_date(dim1, dim2):
       print("\nDatele de intrare corespund restrictiilor impuse.\n")
       pavare_curte(dim1, dim2)
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>

== Explicație == Codul are rol de a calcula numărul de plăci necesare și dimensiunea acestora pentru a pava o curte dreptunghiulară cu dimensiunile date. Funcția pavare_curte calculează cmmdc-ul (cel mai mare divizor comun) al celor două dimensiuni, care este de fapt dimensiunea plăcii, și apoi calculează numărul de plăci necesare pentru a acoperi curtea. Rezultatele sunt afișate la consolă.