4001 - Min Max K 9

De la Universitas MediaWiki
Versiunea din 29 martie 2023 17:53, autor: Andor Giulia (discuție | contribuții) (Pagină nouă: ursă: [https://www.pbinfo.ro/probleme/4001/minmaxk9] == 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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

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))

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.