Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
0860 - Pachete1
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Sursa: [https://www.pbinfo.ro/probleme/860/pachete1] == 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 == Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele introduse corespund cerintelor.", apoi pe un rand nou programul va afișa pe ecran numărul minim de camioane necesare M. În caz contrar, se va afișa mesajul:" Datele introduse nu corespund cerintelor." == 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 : Datele introduse corespund cerintelor. : 3 <br> == Exemplul 2 == ; Intrare : Pachete si capacitate: 0 0 : Volume: 0 0 3 4 5 ; Ieșire : Datele introduse nu corespund cerintelor. <br> == Rezolvare == <syntaxhighlight lang="python" line> #0860 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("Datele introduse nu corespund cerintelor.") return False if not all(1 <= v < 1000000000 for v in volumes): print("Datele introduse nu corespund cerintelor.") return False if not (1 <= C < 1000000000): print("Datele introduse nu corespund cerintelor.") 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(f"Datele introduse corespund cerintelor.\n{count_containers(volumes, C)}") </syntaxhighlight> ==Explicatie rezolvare== Acest program este scris în limbajul de programare Python și este format din două funcții și o secțiune principală de cod. Funcția `count_containers` primește două argumente: o listă de volume și o capacitate maximă `C`. Scopul funcției este de a determina numărul minim de containere necesare pentru a stoca toate volumele din listă, astfel încât niciun container să nu depășească capacitatea maximă `C`. Funcția sortează lista de volume în ordine descrescătoare și parcurge elementele în ordine, adăugând un nou container ori de câte ori nu mai poate fi adăugat un element la containerul curent. Funcția `validate_input` primește trei argumente: numărul de pachete, capacitatea maximă a containerelor și o listă de volume. Scopul acestei funcții este de a valida datele de intrare, verificând dacă toate valorile se încadrează în limitele specificate. În secțiunea principală a codului, utilizatorul este întâmpinat cu un mesaj de intrare și i se cere să introducă numărul de pachete și capacitatea maximă a containerelor. Apoi, utilizatorul este rugat să introducă volumele pachetelor. Datele de intrare sunt validate folosind funcția `validate_input`, iar dacă acestea sunt corecte, funcția `count_containers` este apelată pentru a determina numărul minim de containere necesare și acesta este afișat pe ecran.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width