4001 - Min Max K 9
ursă: [1]
Cerinţa
Se citește o cifră k și apoi se citesc numere naturale distincte de la tastatură până la apariția lui zero. Afișați câte dintre numerele citite după k sunt cuprinse între cel mai mic și cel mai mare număr cu proprietatea că are ultima cifră egală cu k. Dacă niciunul dintre numerele citite nu are ultima cifră egală cu k, atunci se va afișa NU EXISTA.
Date de intrare
Programul citește de la tastatură numărul k și apoi numere naturale distincte. Citirea se încheie la introducerea valorii 0, care nu se prelucrează.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.",Programul afișează pe ecran numărul de numere citite între numărul minim și cel maxim (inclusiv acestea) cu proprietatea cerută. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricții și precizări
- numerele citite aparțin intervalului [0,1.000.000] și sunt distincte (diferite două câte două).
- 0<=k<=9.
- în total se citesc cel mult 200000 de numere.
Exemple
Exemplu 1
- Date de intrare
- 5 45 44 5505 7884 15 75 530 0
- Date de iesire
- 3
Exemplu 2
- Date de intrare
- 4
- 1 2 3 4
- Date de iesire
- Datele sunt corecte. Rezultat: 4
Exemplu 3
- Date de intrare
- 3
- 76968635425 456 6
- Date de iesire
- Datele introduse nu corespund cerinței.
Rezolvare
<syntaxhighlight lang="python" line> k = int(input("Introduceti cifra k: ")) numere = [] while True:
n = int(input("Introduceti un numar: ")) if n == 0: break numere.append(n)
numere_cu_k = [nr for nr in numere if nr % 10 == k] if len(numere_cu_k) == 0:
print("NU EXISTA")
else:
min_nr_cu_k = min([nr for nr in numere if nr % 10 == k]) max_nr_cu_k = max([nr for nr in numere if nr % 10 == k]) numere_intre = [nr for nr in numere if min_nr_cu_k <= nr <= max_nr_cu_k and nr % 10 == k] print(len(numere_intre))
</syntaxhighlight>
Explicație
Dintre numerele citite după 5 (care este k din enunț), cele care au ultima cifră egală cu 5 sunt 45, 5505, 15 și 75. Cel mai mare este 5505 și cel mai mic este 15. Numerele citite între ele (inclusiv ele) sunt 5505, 7884 și 15, adică în număr de 3.