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
0561 - Rafaelo
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!
Sursă: [https://www.pbinfo.ro/probleme/561/rafaelo] == Enunț == Alina dispune de o sumă '''S''' de bani. Apropiindu-se ziua ei de naștere, vrea să cumpere cât mai multe cutii cu bomboane Rafaelo. Alina are la dispoziție '''N''' magazine din care poate face această alegere. Cunoscând prețul unei cutii de bomboane Rafaelo în fiecare magazin și faptul că va cumpăra toate cutiile cu bomboane din același magazin, ajutați-o pe Alina să facă această alegere astfel încât să nu depășească suma '''S''' de care dispune. == Cerință == Cunoscând suma '''S''' de bani, numărul '''N''' de magazine și '''p1''', '''p2''', '''p3''',… , '''pN''' prețul unei cutii de bomboane Rafaelo în fiecare magazin, stabiliți numărul maxim de cutii de bomboane ce poate fi cumpărat și magazinul din care pot fi cumpărate. Dacă sunt mai multe astfel de magazine se va afișa primul dintre ele în ordinea în care au fost date. == Date de intrare == Programul citește de la tastatură separate prin spații suma '''S''', '''N''' numărul de magazine și apoi '''N''' numere naturale nenule separate prin spații, reprezentând prețul unei cutii cu bomboane Rafaelo în fiecare magazin. == Date de ieșire == Programul afișează pe ecran două numere naturale '''x''' și '''y''', separate prin exact un spațiu, reprezentând numărul maxim de cutii cu bomboane Rafaelo ce pot fi cumpărate, respectiv magazinul din care pot fi cumpărate. == Restricții și precizări == * '''1 ≤ N ≤ 100''' * '''1 ≤ S ≤ 10000''' * Prețul unei cutii cu bomboane este un număr natural nenul mai mic sau egal cu '''1000'''. * Cel puțin un magazin are prețul unei cutii cu bomboane mai mic sau egal cu '''S'''. == Exemplu == ; Intrare : 20 5 : 9 3 4 8 3 ; Ieșire : 6 2 == Rezolvare == <syntaxhighlight lang="python" line="1"> def citeste_n(): while True: try: n = int(input("Introduceti numarul de valori: ")) s = int(input("Introduceti suma de bani: ")) if 1<= n <= 100 and 1<= s <= 10000: print("Datele sunt corecte.") return n else: print("Numarul de valori trebuie sa fie intre 2 si 20.") except ValueError: print("Trebuie introduse doar numere intregi.") def citeste_valori(n): valori = [] for i in range(n): while True: try: valoare = int(input("Introduceti o valoare: ")) if valoare >= 1 and valoare <= 1000000000 : print("Datele sunt corecte.") valori.append(valoare) break else: print("Valoarea trebuie sa fie intre 1 si 1.000.000.000.") except ValueError: print("Trebuie introduse doar valori naturale.") return valori def rafaelo(s, valori): max_cutii = 0 magazin = 0 for i in range(len(valori)): if s // valori[i] > max_cutii: max_cutii = s // valori[i] magazin = i + 1 print("Se pot cumpara maxim", max_cutii, "cutii de bomboane de la magazinul", magazin) if _name_ == '_main_': n = citeste_n() valori = citeste_valori(n) s = int(input("Introduceti suma de bani: ")) rafaelo(s, valori) </syntaxhighlight> == Explicatie == Acest cod este o implementare a algoritmului de rezolvare a problemei "Rafaelo", care are ca scop determinarea numărului maxim de cutii de bomboane ce pot fi cumpărate cu o anumită sumă de bani, dintr-un set de prețuri de la mai multe magazine. Funcția citeste_n() primește de la utilizator numărul de valori și suma de bani, verificând dacă valorile introduse respectă condițiile din enunțul problemei. În cazul în care valorile sunt corecte, funcția returnează numărul de valori introduse. Funcția citeste_valori(n) primește numărul de valori și returnează o listă de valori introduse de utilizator. Această funcție verifică dacă valorile introduse sunt corecte și le adaugă în listă. Funcția rafaelo(s, valori) primește suma de bani și lista de prețuri, iar apoi utilizează o buclă for pentru a verifica fiecare preț din listă. Dacă suma de bani împărțită la preț este mai mare decât numărul maxim de cutii până acum, se actualizează valoarea maximă și se memorează numărul magazinului de unde trebuie achiziționate cutiile de bomboane. În cele din urmă, funcția afișează rezultatul obținut, adică numărul maxim de cutii de bomboane care pot fi cumpărate și magazinul de unde trebuie achiziționate cutiile de bomboane.
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