0264 - MaxCif: Difference between revisions
Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/264/maxcif 0264 - MaxCif] |
tot |
||
Line 1: | Line 1: | ||
Sursă: [https://www.pbinfo.ro/probleme/264/maxcif 0264 - MaxCif] | Sursă: [https://www.pbinfo.ro/probleme/264/maxcif 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 <code>100.000</code> 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 <code>is_integer(value)</code> este folosită pentru a verifica dacă un element este un număr întreg. Funcția returnează <code>True</code> dacă elementul este un număr întreg și <code>False</code> în caz contrar. | |||
* Funcția <code>verificare_vector(vector)</code> 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 <code>cifre_max_aparitii(lst)</code> 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 <code>main</code>, lista de elemente este citită de la utilizator și este verificată utilizând funcția <code>verificare_vector</code>. Dacă lista este validă, funcția <code>cifre_max_aparitii</code> este apelată și afișează cifrele cu numărul maxim de apariții. |
Latest revision as of 11:28, 15 April 2023
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 ș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.