0264 - MaxCif

De la Universitas MediaWiki

Sursă: 0264 - MaxCif


Cerinţă

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

Date de intrare

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

Date de ieșire

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

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

Exemple

Exemplul 1

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

Exemplul 2

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

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

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)

Explicație rezolvare

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.