3383 - Cif Max Min1: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
Line 9: Line 9:


== Date de ieșire ==  
== Date de ieșire ==  
Programul va afișa pe ecran,  mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."
Acest program primește ca intrare un număr '''n''' și o capacitate '''C''', reprezentând numărul de pachete și capacitatea camionului, și o listă de n volume, reprezentând volumele fiecărei pachete. Programul calculează câte containere sunt necesare pentru a transporta toate pachetele, respectând capacitatea maximă a camionului. În cazul în care intrarea este invalidă, programul afișează un mesaj de eroare corespunzător.
 
Datele de ieșire ale programului sunt numărul de containere necesare pentru a transporta toate pachetele, sau un mesaj de eroare în cazul în care intrarea este invalidă.


== Restricţii şi precizări ==
== Restricţii şi precizări ==

Revision as of 10:08, 26 March 2023

Sursa: [1]

Cerinţa

e poarta unei fabrici ies în ordine n pachete fiecare având un volum cunoscut. Pachetele sunt transportate folosind camioane. Toate camioanele au aceeași capacitate C, iar procedura este următoarea: fiecare pachet scos din fabrică este imediat încărcat într-un camion, și nu este posibil ca la încărcare să fie mai mult de un camion.

Determinați numărul minim de camioane necesar pentru a transporta cele n pachete.

Date de intrare

Programul citește de la tastatură numerele n C, iar apoi n numere naturale, reprezentând volumele pachetelor.

Date de ieșire

Acest program primește ca intrare un număr n și o capacitate C, reprezentând numărul de pachete și capacitatea camionului, și o listă de n volume, reprezentând volumele fiecărei pachete. Programul calculează câte containere sunt necesare pentru a transporta toate pachetele, respectând capacitatea maximă a camionului. În cazul în care intrarea este invalidă, programul afișează un mesaj de eroare corespunzător.

Datele de ieșire ale programului sunt numărul de containere necesare pentru a transporta toate pachetele, sau un mesaj de eroare în cazul în care intrarea este invalidă.

Restricţii şi precizări

  • 1 ⩽ n ⩽ 1000
  • volumele pachetelor și capacitatea camioanelor vor fi mai mici decât 1.000.000.000.

Exemplul 1

Intrare
Pachete si capacitate: 5 4
Volume: 2 1 3 1 3
Ieșire
3


Exemplul 2

Intrare
Pachete si capacitate: 0 0
Volume: 0 0 3 4 5
Ieșire
Numărul de pachete trebuie să fie între 1 și 1000.


Exemplul 3

Intrare
7
Ieșire
Datele corespund cerințelor.
25401600


Rezolvare

<syntaxhighlight lang="python" line>

  1. 3383

def count_containers(volumes, C):

   volumes.sort(reverse=True)
   count = 0
   current = C
   for volume in volumes:
       if volume <= current:
           current -= volume
       else:
           count += 1
           current = C - volume
   if current < C:
       count += 1
   return count


def validate_input(n, C, volumes):

   if not (1 <= n <= 1000):
       print("Numărul de pachete trebuie să fie între 1 și 1000.")
       return False
   if not all(1 <= v < 1000000000 for v in volumes):
       print("Volumele pachetelor trebuie să fie mai mici decât 1.000.000.000.")
       return False
   if not (1 <= C < 1000000000):
       print("Capacitatea camionului trebuie să fie mai mică decât 1.000.000.000.")
       return False
   return True


if __name__ == '__main__':

   n, C = map(int, input("Pachete si capacitate: ").split())
   volumes = list(map(int, input("Volume: ").split()))
   if validate_input(n, C, volumes):
       print(count_containers(volumes, C))


</syntaxhighlight>