2268 - Colegi

From Bitnami MediaWiki
Revision as of 20:32, 3 January 2024 by Tita Marian (talk | contribs) (Pagină nouă: == Cerinţa == Dirigu’ vrea să știe care este cel mai frecvent prenume printre elevii din clasa noastră. Pentru aceasta a realizat o listă cu cele '''n''' prenume ale elevilor din clasă și acum vă cere să determinați prenumele cel mai frecvent și numărul său de apariții. Dacă sunt mai multe prenume cu număr maxim de apariții se va determina primul în ordine alfabetică. . == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

Dirigu’ vrea să știe care este cel mai frecvent prenume printre elevii din clasa noastră. Pentru aceasta a realizat o listă cu cele n prenume ale elevilor din clasă și acum vă cere să determinați prenumele cel mai frecvent și numărul său de apariții. Dacă sunt mai multe prenume cu număr maxim de apariții se va determina primul în ordine alfabetică. .

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi cele n prenume ale colegilor.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran S k, separate printr-un spațiu, reprezentând prenumele determinat și numărul de apariții a acestuia.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu respecta cerintele impuse." , iar daca se indeplinesc, se afiseaza mesajul "Datele de intrare respecta cerintele impuse."

Restricţii şi precizări[edit | edit source]

  • 1 ≤ n ≤ 100.000 – mda, este o clasă cam mare…

Exemplul 1[edit | edit source]

Intrare
8 
Maria Tudor Andrei Tudor George Andrei Ioana Andrei
Ieșire
Datele de intrare respecta cerintele impuse.
Andrei 3


Exemplul 2[edit | edit source]

Intrare
0


Ieșire
Datele de intrare nu respecta cerintele impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def cel_mai_frecvent_prenume(n, prenume):

   frecventa = {}
   for nume in prenume:
       if nume in frecventa:
           frecventa[nume] += 1
       else:
           frecventa[nume] = 1
   prenume_max_frecventa = max(frecventa, key=lambda x: (frecventa[x], x))
   numar_aparitii = frecventa[prenume_max_frecventa]
   return prenume_max_frecventa, numar_aparitii

if __name__ == "__main__":

   try:
       n = int(input("Introdu numărul de prenume: "))
       if 1 <= n <= 100000:
           prenume = input("Introdu lista de prenume separate de spațiu: ").split()
           if len(prenume) != n or any(not nume.isalpha() for nume in prenume):
               print("Datele de intrare nu respecta cerintele impuse.")
           else:
               print("Datele de intrare respecta cerintele impuse.")
               rezultat = cel_mai_frecvent_prenume(n, prenume)
               print(" ".join(map(str, rezultat)))
       else:
           print("Datele de intrare nu respecta cerintele impuse.")
   except ValueError:
       print("Datele de intrare nu respecta cerintele impuse.")

</syntaxhighlight>