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
3072 - Sum Prod Max 3
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/4273/prodpp] == Cerinţa == Scrieți un program care citește un '''număr natural nenul n''' și care determină și afișează trei numere naturale '''a''', '''b''' '''și''' '''c''', astfel încât '''a+b+c=n''' și produsul '''a*b*c''' este maximul dintre produsele oricăror trei numere naturale care adunate dau suma egală cu '''n'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran cele trei numere naturale '''a b c''', determinate, în ordine crescătoare, separate prin câte un spațiu. Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează trei numere naturale a, b și c, astfel încât a+b+c=n și produsul a*b*c este maximul dintre produsele oricăror trei numere naturale care adunate dau suma egală cu n. . În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse." == Restricţii şi precizări == 1 ≤ n ≤ 1.000.000.000; cele trei numere se vor afișa în ordine crescătoare; == Exemplul 1 == ; Datele de intrare :Introduceti numarul n: : 13 ; Datele de ieșire : Datele sunt introduse corect. : 4 4 5 <br> == Rezolvare == <syntaxhighlight lang="python" line> #3072 def get_numbers_sum(n): """ Returnează toate combinațiile posibile de trei numere a, b și c astfel încât a + b + c = n. """ numbers = [] for a in range(1, n - 1): for b in range(a, n - a): c = n - a - b if c >= b: numbers.append((a, b, c)) return numbers def get_max_product(numbers): """ Returnează produsul maxim dintre orice trei numere din lista `numbers`. """ max_prod = 0 max_numbers = () for a, b, c in numbers: prod = a * b * c if prod > max_prod: max_prod = prod max_numbers = (a, b, c) return max_numbers def print_numbers(numbers): """ Afișează cele trei numere din tupla `numbers` în ordine crescătoare. """ print(*sorted(numbers)) if __name__ == '__main__': # Citim numărul n de la tastatură și validăm n = int(input("Introduceți numărul n: ")) if not 1 <= n <= 1000000000: print("Datele nu corespund restricțiilor impuse.") exit() # Obținem toate combinațiile posibile de trei numere astfel încât a + b + c = n numbers = get_numbers_sum(n) # Obținem cele trei numere care au produsul maxim max_numbers = get_max_product(numbers) # Afișăm cele trei numere în ordine crescătoare print("Datele sunt introduse corect.") print_numbers(max_numbers) </syntaxhighlight> '''Explicatie cod:''' Acest cod definește trei funcții: 1.get_numbers_sum(n): primește ca parametru un număr natural n și returnează o listă de tupluri cu toate combinațiile posibile de trei numere naturale a, b și c astfel încât a + b + c = n. 2.get_max_product(numbers): primește ca parametru o listă de tupluri cu toate combinațiile posibile de trei numere naturale și returnează tupla cu cele trei numere care au produsul maxim. 3.print_numbers(numbers): primește ca parametru o tuplă cu trei numere și le afișează în ordine crescătoare. În funcția main, utilizatorul introduce de la tastatură un număr natural n, apoi se obțin toate combinațiile posibile de trei numere care adunate dau suma egală cu n utilizând funcția get_numbers_sum(n). Se determină cele trei numere cu produsul maxim utilizând funcția get_max_product(numbers), iar apoi acestea sunt afișate în ordine crescătoare utilizând funcția print_numbers(numbers).
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