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
2459 - Low Memory
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!
== Cerința == Ajutaţi-l pe Bogdan să ducă la bun sfârşit sarcina primită de la tatăl său pentru a se putea întâlni cu Marcela, fata din vecini. == Date de intrare == Fișierul de intrare '''low_memory.in''' conține pe prima linie numărul n, iar pe a doua linie n numere naturale ordonate crescător. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran: "Datele sunt introduse corect.", fișierul de ieșire '''low_memory.out''' va conține pe prima linie numerele din fişierul de intrare în ordine descrescătoare. În cazul în care datele nu respectă restricțiile, se va afișa: "Datele nu corespund restricțiilor impuse.". == Restricții și precizări == '''21 ≤ n ≤ 3000'''numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât '''10^13'''. == Exemple == ===Exemplul 1=== ; ''low_memory.in'' :7 :1 2 5 7 8 9 12 ; ''ecran'' :Datele sunt introduse corect. ; ''low_memory.out'' :12 9 8 7 5 2 1 ===Exemplul 2=== ; ''low_memory.in'' :5 :1 2 3 4 5 ; ''ecran'' :Datele sunt introduse corect. ; ''low_memory.out'' :5 4 3 2 1 ===Exemplul 3=== ; ''low_memory.in'' :3 :1 2 3 10000000000000 ; ''ecran'' :Datele nu corespund restricțiilor impuse. ; ''low_memory.out'' : <br> == Rezolvare == <syntaxhighlight lang="python" line="1"> # 2459 - Low Memory from typing import List import sys def valideaza_date_intrare(n: int, a: List[int]) -> bool: # Verifică dacă n este un număr pozitiv și a are o lungime corespunzătoare # și dacă toate elementele din a sunt mai mici decât 10^13 if n <= 0 or len(a) != n or any(x >= 10**13 for x in a): print("Datele nu corespund restricțiilor impuse.") sys.exit(0) print("Datele sunt introduse corect.") return True def rezolva_problema(n: int, a: List[int]) -> List[int]: # Inversează elementele listei return a[::-1] if __name__ == "__main__": # Citire date de intrare try: with open("low_memory.in", "r") as fin: n = int(fin.readline().strip()) a = list(map(int, fin.readline().split())) except FileNotFoundError: print("Nu s-a putut deschide fisierul de intrare.") sys.exit(0) # Validează datele de intrare valideaza_date_intrare(n, a) # Rezolvă problema result = rezolva_problema(n, a) # Scrie date de ieșire try: with open("low_memory.out", "w") as fout: fout.write(" ".join(map(str, result))) except: sys.exit(0) </syntaxhighlight> ==Explicatie== valideaza_date_intrare(n: int, a: List[int]) -> bool - Această funcție primește două argumente: un număr întreg n și o listă de întregi a. Scopul acestei funcții este de a valida datele de intrare. Funcția verifică dacă n este un număr pozitiv, dacă a are o lungime corespunzătoare și dacă toate elementele din a sunt mai mici decât 10^13. Dacă datele de intrare nu respectă aceste restricții, funcția afișează un mesaj de eroare și se termină programul. Dacă datele de intrare sunt valide, funcția afișează un mesaj de confirmare și returnează True. rezolva_problema(n: int, a: List[int]) -> List[int] - Această funcție primește aceleași argumente ca și funcția valideaza_date_intrare, adică un număr întreg n și o listă de întregi a. Scopul acestei funcții este să inverseze elementele din lista a și să returneze lista inversată. if __name__ == "__main__": - Această linie verifică dacă acest script este rulat direct ca program (adică prin intermediul comenzii python nume_script.py), sau dacă este importat ca un modul într-un alt script. Dacă acest script este rulat direct ca program, codul din interiorul blocului if va fi executat. În blocul if __name__ == "__main__": sunt apelate funcțiile valideaza_date_intrare, rezolva_problema și sunt realizate operațiile de citire și scriere în fișiere. În cazul în care citirea din fișierul de intrare sau scrierea în fișierul de ieșire nu poate fi efectuată, programul se termină.
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