2422 - Produs Maxim: Difference between revisions
No edit summary |
No edit summary |
||
Line 26: | Line 26: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# 2422 - Produs Maxim | |||
def validare(nr): # functia de validare a datelor de intrare | def validare(nr): # functia de validare a datelor de intrare | ||
if len(nr) > 100000: | if len(nr) > 100000: |
Latest revision as of 20:22, 10 November 2023
Cerinţa[edit | edit source]
Se citesc mai multe numere naturale nenule. Fiecare astfel de număr X se va afișa, urmat de un triplet de numere a b c cu proprietatea că a+b+c=X, iar produsul lor este maxim.
Date de intrare[edit | edit source]
Fișierul de intrare produsmaximin.txt conține mai multe numere naturale separate prin spații și scrise pe unul sau mai multe rânduri.
Date de ieşire[edit | edit source]
Fișierul de ieșire produsmaximout.txt va conține pe mai multe linii valorile X a b c separate printr-un spațiu, reprezentând numărul și tripletul corespunzător acestuia, pentru fiecare număr citit din fișierului de intrare.
Restricții și precizări[edit | edit source]
- vor fi cel mult 100.000 de numere în fișierul de intrare
- numerele citite vor fi mai mici decât 10.000.000
- a ≤ b ≤ c
- fiecare rând din fișierul de intrare va conține exact patru valori, conform cerinței
Exemplul 1[edit | edit source]
- produsmaximin.txt
- 7 5
- produsmaximout.txt
- Datele introduse corespund restricțiilor impuse.
- 7 2 2 3
- 5 1 2 2
Explicație[edit | edit source]
În fișierul de intrare se găsesc două numere 7 și 5, iar fișierul de ieșire va avea două linii, cu valorile cerute (de exemplu, dintre toate tripletele în care se poate descompune 7: 1+2+4, 1+3+3, 2+2+3, produsul 2*2*3 este cel mai mare).
Exemplul 2[edit | edit source]
- produsmaximin.txt
- 7 n
- produsmaximout.txt
- Datele introduse nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 2422 - Produs Maxim
def validare(nr): # functia de validare a datelor de intrare
if len(nr) > 100000: raise ValueError for numar in nr: if numar > 10000000: raise ValueError file_out.write("Datele de intrare corespund restrictiilor impuse\n")
def find_triplet(x): # functia de rezolvare
a1 = x // 3 b1 = (x - a1) // 2 c1 = x - a1 - b1 return a1, b1, c1
if __name__ == '__main__':
file_in = open("produsmaximin.txt", "r") # declararea fisierelor file_out = open("produsmaximout.txt", "w") # fisierul out trebuie declarat cu optiunea "w" (write)
try: numere = [int(x) for x in file_in.read().split()] # citirea numerelor se face ca lista de numere validare(numere) # apelul functiei de validare for X in numere: a, b, c = find_triplet(X) file_out.write(f"{X} {a} {b} {c}\n") # apelul functiei de rezolvare
except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse") except IndexError: file_out.write("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>