2771 - Covorul: Difference between revisions
Robert Manc (talk | contribs) Pagină nouă: == Cerinţa == Mama vrea să acopere cu covoare o cameră cu lungimea de '''dimensiunea_x''' metri și lățimea de '''dimensiunea_y''' 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ă c... |
Robert Manc (talk | contribs) No edit summary |
||
Line 19: | Line 19: | ||
: 10 3 | : 10 3 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 3 6 | : 3 6 | ||
== Explicație == | == Explicație == | ||
Line 27: | Line 27: | ||
: 1 100 | : 1 100 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 1 100 | : 1 100 | ||
== Explicație == | == Explicație == |
Revision as of 10:36, 11 April 2023
Cerinţa
Mama vrea să acopere cu covoare o cameră cu lungimea de dimensiunea_x metri și lățimea de dimensiunea_y 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 dimensiunea_x și dimensiunea_y, reprezentând dimensiunile camerei.
Date de ieşire
Programul va afișa pe ecran numerele dim_max și numar_total reprezentând în ordine dimensiunea maximă a unui covor folosit și numărul total de covoare folosite.
Restricții și precizări
- dimensiunea_x, dimensiunea_y ∈ Ν
- 1 ⩽ dimensiunea_x, dimensiunea_y ⩽ 1.000.000.000
- dimensiunile covoarelor sunt numere naturale nenule
Exemplu1
- Intrare
- 10 3
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 3 6
Explicație
Se folosesc 3 covoare de latură 3 și 3 covoare de latură 1. Dimensiunea maximă este 3.
Exemplu2
- Intrare
- 1 100
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1 100
Explicație
Se folosesc 100 covoare de latură 1. Dimensiunea maximă este 1.
Rezolvare
<syntaxhighlight lang="python" line> def validare_date(dimensiunea_x, dimensiunea_y):
if 0 <= int(dimensiunea_x) <= 1_000_000_000 and 0 <= int(dimensiunea_y) <= 1_000_000_000: return True return False
def calculeaza_numarul_covoarelor(dimensiunea_x, dimensiunea_y):
dim_max = min(dimensiunea_x, dimensiunea_y) print(dim_max, end=' ') numar_total = 0 while dimensiunea_x != 0 and dimensiunea_y != 0: if dimensiunea_x > dimensiunea_y: x = dimensiunea_x // dimensiunea_y dimensiunea_x -= x * dimensiunea_y numar_total += x else: x = dimensiunea_y // dimensiunea_x dimensiunea_y -= x * dimensiunea_x numar_total += x print(numar_total)
if __name__ == '__main__':
dimensiunea_x, dimensiunea_y = map(int, input().split()) if validare_date(dimensiunea_x, dimensiunea_y): print("\nDatele de intrare corespund restrictiilor impuse.\n") calculeaza_numarul_covoarelor(dimensiunea_x, dimensiunea_y) else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>