1754 - Munți: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
Line 61: Line 61:


== Explicatie rezolvare ==
== Explicatie rezolvare ==
Acest program validează inputul pentru o problemă specifică și apoi calculează un rezultat pe baza inputului.
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".
În ceea ce privește validarea inputului, funcția validate_input primește doi parametri: '''n''' și '''x_list'''.
 
n reprezintă numărul de înălțimi de verificat, iar '''x_list''' este o listă de înălțimi inițiale.  
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()".
În cazul în care '''n''' este mai mic decât '''1''' sau mai mare decât '''1.000.000''' sau oricare dintre înălțimi este mai mică decât '''1''' sau mai mare decât '''1.000.000.000''', funcția afișează un mesaj de eroare și apoi iese din program.
 
Funcția main deschide două fișiere, "munti.in" și "munti.out", citind din fișierul de intrare '''munti.in''' valoarea lui '''n''' și lista de înălțimi '''x_list'''.  
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".
Apoi, apelând funcția '''validate_input''', se verifică validitatea inputului.
 
Dacă suma tuturor înălțimilor din listă este divizibilă cu '''n''', se afișează '''n''' în fișierul de ieșire '''munti.out'''.
Î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 caz contrar, se afișează '''n-1'''.
În general, acest program se ocupă de o problemă specifică care implică validarea inputului și apoi efectuarea unor calcule pe baza acelui input.

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>

  1. 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.