0264 - MaxCif
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
<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
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 șiFalse
î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țiaverificare_vector
. Dacă lista este validă, funcțiacifre_max_aparitii
este apelată și afișează cifrele cu numărul maxim de apariții.