3786 - Toate: Diferență între versiuni
De la Universitas MediaWiki
Fără descriere a modificării |
|||
Linia 39: | Linia 39: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def elimina_cifra_9(numar): | ||
numar_fara_noua = int(str(numar).replace('9', '')) | numar_fara_noua = int(str(numar).replace('9', '')) | ||
return numar_fara_noua | return numar_fara_noua | ||
def | def gaseste_maxim_fara_9(numere): | ||
maxim_fara_noua = -1 | |||
exista_valoare_maxima = False | exista_valoare_maxima = False | ||
for numar in numere: | for numar in numere: | ||
exista_valoare_maxima = True | exista_valoare_maxima = True | ||
if numar > | if numar > maxim_fara_noua: | ||
maxim_fara_noua = numar | |||
return | return maxim_fara_noua, exista_valoare_maxima | ||
Linia 75: | Linia 75: | ||
numar = int(numar) | numar = int(numar) | ||
if numar <= 0 or numar > 999999999: | if numar <= 0 or numar > 999999999: | ||
print("Eroare: Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre | print("Eroare: Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.") | ||
else: | else: | ||
numere.append(numar) | numere.append(numar) | ||
Linia 82: | Linia 82: | ||
# eliminăm cifra 9 din numerele care o conțin | # eliminăm cifra 9 din numerele care o conțin | ||
numere_modificate = [ | numere_modificate = [elimina_cifra_9(numar) for numar in numere] | ||
# găsim numărul maxim din numerele modificate | # găsim numărul maxim din numerele modificate | ||
maxim_fara_noua, exista_valoare_maxima = gaseste_maxim_fara_9(numere_modificate) | |||
# scriem rezultatul în fișierul toate.out | # scriem rezultatul în fișierul toate.out | ||
with open('toate.out', 'w') as f: | with open('toate.out', 'w') as f: | ||
if exista_valoare_maxima: | if exista_valoare_maxima: | ||
f.write(str( | f.write(str(maxim_fara_noua)) | ||
print("Valoarea cautată este afișată în fișierul toate.out.") | print("Valoarea cautată este afișată în fișierul toate.out.") | ||
else: | else: |
Versiunea curentă din 15 mai 2023 20:43
sursa: [1]
= Cerinţa
De n numere sunt date, Şi cifra nouă e-n toate, Află ce număr devine Maxim făr’de nouă-n sine?
= Notă
Vreme trece, vreme vine, Toate-s vechi şi nouă toate; Ce e rău şi ce e bine Tu te-ntreabă şi socoate;
(Mihai Eminescu, Glossă)
Date de intrare
Fișierul de intrare toate.in conține pe prima linie un număr n, iar pe urmatoarele linii cele n numere naturale.
Date de ieşire
Fișierul de ieșire toate.out va conține pe prima linie numărul maxim cerut.
Restricții și precizări
- 1 ≤ n ≤ 100.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1.000.000.000
Exemplu
- toate.in
- 5
- 923 926 329 429 3959
- toate.out
- 42
Explicatie
Numărul maxim cerut este 42.
Rezolvare
Rezolvare ver. 1
def elimina_cifra_9(numar):
numar_fara_noua = int(str(numar).replace('9', ''))
return numar_fara_noua
def gaseste_maxim_fara_9(numere):
maxim_fara_noua = -1
exista_valoare_maxima = False
for numar in numere:
exista_valoare_maxima = True
if numar > maxim_fara_noua:
maxim_fara_noua = numar
return maxim_fara_noua, exista_valoare_maxima
def main():
try:
with open('toate.in', 'r') as f:
# citim numărul de numere din fișier
try:
n = int(f.readline().strip())
if n <= 0:
print("Eroare: Numărul de numere trebuie să fie un întreg pozitiv.")
except ValueError:
print("Eroare: Numărul de numere trebuie să fie un număr întreg.")
n = 0
# citim numerele din fișier și le stocăm într-o listă
numere = []
for i in range(n):
numar = f.readline().strip()
try:
numar = int(numar)
if numar <= 0 or numar > 999999999:
print("Eroare: Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.")
else:
numere.append(numar)
except ValueError:
print("Eroare: Datele de intrare trebuie să fie numere întregi.")
# eliminăm cifra 9 din numerele care o conțin
numere_modificate = [elimina_cifra_9(numar) for numar in numere]
# găsim numărul maxim din numerele modificate
maxim_fara_noua, exista_valoare_maxima = gaseste_maxim_fara_9(numere_modificate)
# scriem rezultatul în fișierul toate.out
with open('toate.out', 'w') as f:
if exista_valoare_maxima:
f.write(str(maxim_fara_noua))
print("Valoarea cautată este afișată în fișierul toate.out.")
else:
f.write("Nu există nicio valoare maximă fără cifra 9 în fișier.")
except FileNotFoundError:
print("Eroare: Fișierul de intrare nu există.")
if __name__ == "__main__":
main()
Rezolvare ver. 2
try:
with open('toate.in', 'r') as f:
# citim numărul de numere din fișier
try:
n = int(f.readline().strip())
if n <= 0:
print("Eroare: Numărul de numere trebuie să fie un întreg pozitiv.")
except ValueError:
print("Eroare: Numărul de numere trebuie să fie un număr întreg.")
n = 0
# citim numerele din fișier și le stocăm într-o listă
numere = []
for i in range(n):
numar = f.readline().strip()
try:
numar = int(numar)
if numar <= 0 or numar > 999999999:
print("Eroare: Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.")
else:
# eliminăm complet cifra 9 din numerele care o conțin
numar_fara_noua = int(str(numar).replace('9', ''))
numere.append(numar_fara_noua)
except ValueError:
print("Eroare: Datele de intrare trebuie să fie numere întregi.")
# găsim numărul maxim din numerele modificate
max_fara_noua = -1
exista_valoare_maxima = False
for numar in numere:
exista_valoare_maxima = True
if numar > max_fara_noua:
max_fara_noua = numar
# scriem rezultatul în fișierul toate.out
with open('toate.out', 'w') as f:
if exista_valoare_maxima:
f.write(str(max_fara_noua))
print("Valoarea cautată este afișată în fișierul toate.out.")
else:
f.write("Nu există nicio valoare maximă fără cifra 9 în fișier.")
except FileNotFoundError:
print("Eroare: Fișierul de intrare nu există.")