0264 - MaxCif

From Bitnami MediaWiki

Sursă: 0264 - MaxCif


Cerinţă[edit | edit source]

Se dau mai multe numere naturale formate din exact o cifră. Determinaţi cifrele cu număr maxim de apariţii.

Date de intrare[edit | edit source]

Se vor introduce cel mult 100.000 de numere naturale formate dintr-o singură cifră separate prin spaţii.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se vor afișa cifrele cu număr maxim de apariții. În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!".

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

  • 1 <= n <= 100.000
  • valorile șirului vor fi cuprinse între 1 și 9

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
Introduceti numere de o singura cifra separate prin spatiu:1 1 2 21 2 11
Ieșire
Datele introduse sunt incorecte!

Exemplul 2[edit | edit source]

Intrare
Introduceti numere de o singura cifra separate prin spatiu:5 6 4 1 2 5 7 2
Ieșire
Datele introduse sunt corecte!
Cifrele cu numar maxim de aparitii sunt:  ['5', '2']

Exemplul 3[edit | edit source]

Intrare
Introduceti numere de o singura cifra separate prin spatiu:1 2 3 2 6 4 2 5 3 2 3 3 2 3 4
Ieșire
Datele introduse sunt corecte!
Cifrele cu numar maxim de aparitii sunt:  ['2', '3']

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def is_integer(value):

   return value.isdigit()


def verificare_vector(vector):

   n = 0
   for i in vector:
       if is_integer(i) and int(i) < 10:
           n += 1
       else:
           print("Datele introduse sunt incorecte!")
           exit()
   if n > 100000:
       print("Datele introduse sunt incorecte!")
       exit()


def cifre_max_aparitii(lst):

   aparitii = {}
   for cifra in lst:
       if isinstance(cifra, int):
           cifra = str(cifra)
           if cifra in aparitii:
               aparitii[cifra] += 1
           else:
               aparitii[cifra] = 1
   max_aparitii = max(aparitii.values())
   cifre_max_aparitii = [cifra for cifra, aparitie in aparitii.items() if aparitie == max_aparitii]
   print("Cifrele cu numar maxim de aparitii sunt: ", cifre_max_aparitii)


if __name__ == '__main__':

   elem = input(f"Introduceti numere de o singura cifra separate prin spatiu:").split()
   verificare_vector(elem)
   print("Datele introduse sunt corecte!")
   lst_int = list(map(int, elem))
   cifre_max_aparitii(lst_int)


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program primește de la utilizator o listă de numere cu o singură cifră și afișează cifrele cu numărul maxim de apariții din listă. Iată cum funcționează acest program:

  • Funcția is_integer(value) este folosită pentru a verifica dacă un element este un număr întreg. Funcția returnează True dacă elementul este un număr întreg și False în caz contrar.
  • Funcția verificare_vector(vector) verifică dacă elementele din lista dată sunt numere întregi cu o singură cifră și are cel mult 100000 de astfel de elemente. Dacă elementele din listă sunt valide, funcția afișează "Datele introduse sunt corecte!". În caz contrar, afișează "Datele introduse sunt incorecte!" și iese din program.
  • Funcția cifre_max_aparitii(lst) primește lista dată ca argument și numără numărul de apariții al fiecărei cifre din listă. După aceea, determină numărul maxim de apariții și afișează cifrele care au numărul maxim de apariții.
  • În funcția main, lista de elemente este citită de la utilizator și este verificată utilizând funcția verificare_vector. Dacă lista este validă, funcția cifre_max_aparitii este apelată și afișează cifrele cu numărul maxim de apariții.