0378 - Pavare

From Bitnami MediaWiki
Revision as of 16:10, 28 April 2023 by Robert Manc (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

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

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

Date de ieşire

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

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

Exemplu1

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

Explicație

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

Exemplu2

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

Explicație

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

Rezolvare

<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ă.