1754 - Munți: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
Line 61: | Line 61: | ||
== Explicatie rezolvare == | == Explicatie rezolvare == | ||
Acest program | Acest program este o soluție pentru o problemă de programare care citește date de intrare dintr-un fișier numit "munti.in", verifică dacă aceste date îndeplinesc anumite cerințe și apoi calculează un rezultat bazat pe datele de intrare și îl scrie într-un fișier numit "munti.out". | ||
Funcția "validate_input" verifică dacă numărul "n" și lista "x_list" de numere întregi citite din fișierul de intrare îndeplinesc cerințele problemei. Dacă datele nu îndeplinesc cerințele, programul afișează un mesaj de eroare și se încheie prin apelul funcției "exit()". | |||
După validarea datelor de intrare, programul calculează suma numerelor din lista "x_list" și determină dacă această sumă este divizibilă cu "n" sau nu. Dacă suma este divizibilă cu "n", atunci programul scrie în fișierul de ieșire numărul "n", altfel scrie "n - 1". | |||
Dacă suma | În esență, acest program încearcă să găsească numărul de munți (sau vârfuri) care pot fi formați prin gruparea unui anumit număr de înălțimi ale munților citite din fișierul de intrare. | ||
În |
Revision as of 15:41, 26 April 2023
Sursa: [1]
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
Fișierul 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ă.
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
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):
print("Datele de intrare sunt valide.") if not 1 <= n <= 1000000: print("Datele introduse nu corespund cerintelor.") exit() if not all(1 <= x <= 1000000000 for x in x_list): print("Datele introduse nu corespund cerintelor.") exit()
if __name__ == "__main__":
with open("munti.in", "r") as f_in, open("munti.out", "w") as f_out: n = int(f_in.readline()) x_list = list(map(int, f_in.readline().split())) validate_input(n, x_list) s = sum(x_list) if s % n == 0: f_out.write(str(n)) else: f_out.write(str(n - 1))
</syntaxhighlight>
Explicatie rezolvare
Acest program este o soluție pentru o problemă de programare care citește date de intrare dintr-un fișier numit "munti.in", verifică dacă aceste date îndeplinesc anumite cerințe și apoi calculează un rezultat bazat pe datele de intrare și îl scrie într-un fișier numit "munti.out".
Funcția "validate_input" verifică dacă numărul "n" și lista "x_list" de numere întregi citite din fișierul de intrare îndeplinesc cerințele problemei. Dacă datele nu îndeplinesc cerințele, programul afișează un mesaj de eroare și se încheie prin apelul funcției "exit()".
După validarea datelor de intrare, programul calculează suma numerelor din lista "x_list" și determină dacă această sumă este divizibilă cu "n" sau nu. Dacă suma este divizibilă cu "n", atunci programul scrie în fișierul de ieșire numărul "n", altfel scrie "n - 1".
În esență, acest program încearcă să găsească numărul de munți (sau vârfuri) care pot fi formați prin gruparea unui anumit număr de înălțimi ale munților citite din fișierul de intrare.