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
1754 - Munți
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/1754/munti] == Cerinţa == Vrăjitorul vă cere să determinați numărul maxim de munți ce pot fi aduși la o înălțime egală. == Date de intrare == Pe prima linie a fișierului '''munti.in''' se va afla numărul natural '''N''', reprezentând numărul de munți existenți. Pe cea de-a doua linie se vor afla '''N''' valori naturale separate prin spațiu, reprezentând înălțimea inițială a fiecărui munte. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse corespund cerintelor.", apoi fișierul de ieșire munti.out va conține, pe prima și singura linie a fișierului, numărul maxim de munți ce pot fi aduși la o înălțime egală. În cazul în care datele nu respectă restricțiile, se va doar afișa pe ecran: "Datele introduse nu corespund cerintelor." == Restricţii şi precizări == * 1 ⩽ '''N''' ⩽ 1.000.000 * 1 ⩽ '''înalțimea inițială''' ⩽ 1.000.000.000 == Exemplul 1 == ; Intrare : ''munti.in'' : 4 : 2 6 2 2 ; Ieșire : Datele introduse corespund cerintelor. : ''munti.out'' : 4 <br> == Exemplul 2 == ; Intrare : ''munti.in'' : 8 : 2 6 2 2 ; Ieșire : Datele introduse corespund cerintelor. : ''munti.out'' : 7 == Rezolvare == <syntaxhighlight lang="python" line> #1754 def validate_input(n, x_list): if not 1 <= n <= 1000000 or not all(1 <= x <= 1000000000 for x in x_list): print("Datele introduse nu corespund cerintelor.") exit() def read_input_file(file_path): with open(file_path, "r") as f_in: n = int(f_in.readline()) x_list = list(map(int, f_in.readline().split())) return n, x_list def write_output_file(file_path, result): with open(file_path, "w") as f_out: f_out.write(str(result)) def calculate_result(n, x_list): s = sum(x_list) return n if s % n == 0 else n - 1 if __name__ == "__main__": input_file = "munti.in" output_file = "munti.out" try: n, x_list = read_input_file(input_file) validate_input(n, x_list) result = calculate_result(n, x_list) write_output_file(output_file, result) print("Datele introduse corespund cerintelor.") except ValueError as e: print(str(e)) except FileNotFoundError: print("Fisierul de intrare nu exista.") except Exception as e: print("A aparut o eroare: " + str(e)) </syntaxhighlight> == Explicatie rezolvare == Acest program are ca scop citirea unui fișier de intrare, validarea datelor, efectuarea unui calcul și scrierea rezultatului într-un fișier de ieșire. Funcția `validate_input` primește doi parametri: `n` și `x_list`. Această funcție verifică dacă `n` este între 1 și 1.000.000 și dacă toate elementele din `x_list` sunt între 1 și 1.000.000.000. Dacă această validare nu este îndeplinită, se afișează un mesaj de eroare și programul se încheie. Funcția `read_input_file` primește calea către un fișier de intrare și returnează două valori: `n` și `x_list`. Ea deschide fișierul de intrare și citește prima linie, care reprezintă `n`. Apoi citește a doua linie și o împarte în elemente întregi, pe care le stochează într-o listă `x_list`. Cele două valori sunt returnate ca rezultat. Funcția `write_output_file` primește calea către un fișier de ieșire și un rezultat. Ea deschide fișierul de ieșire și scrie rezultatul convertit la șir de caractere. Funcția `calculate_result` primește `n` și `x_list` și efectuează un calcul pentru a obține rezultatul. Calculează suma tuturor elementelor din `x_list` și verifică dacă această sumă este divizibilă cu `n`. Dacă este, rezultatul este egal cu `n`, altfel rezultatul este egal cu `n - 1`. Rezultatul calculat este returnat. În cadrul blocului `if __name__ == "__main__":`, se specifică fișierul de intrare și fișierul de ieșire. Se încearcă citirea datelor din fișierul de intrare folosind `read_input_file`, validarea datelor cu `validate_input`, calcularea rezultatului cu `calculate_result`, scrierea rezultatului în fișierul de ieșire folosind `write_output_file`, și se afișează un mesaj de confirmare dacă totul a fost realizat cu succes. Dacă apar excepții în timpul execuției (cum ar fi valori invalide în fișierul de intrare sau fișierul de intrare lipsă), se afișează un mesaj corespunzător.
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