0621 - Numar Lipsa

De la Universitas MediaWiki

Cerința

Se dă un șir cu n numere naturale. Determinați cel mai mic număr natural nenul care nu apare printre numerele date.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieșire

Programul va afișa pe ecran numărul determinat X.

Restricții și precizări

  • 1 ≤ n ≤ 100;
  • cele n numere citite vor fi mai mici decât 1.000.000.000;

Exemplul 1

Intrare
5
4 2 7 6 1
Ieșire
Datele de intrare corespund restricțiilor impuse.
Cel mai mic număr natural nenul care nu apare în șirul dat este: 3

Exemplul 2

Intrare
0
1 2 4
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#0621 - Numar Lipsa
def gaseste_numar(n, numere): # definim o functie care cauta cel mai mic numar natural nenul care 
                              # nu apare in lista data
    numere_date = set(numere)  # convertim lista de numere intr-un set pentru a elimina dublurile
    for i in range(1, max(numere_date) + 2): # iteram prin numerele de la 1 pana la maximul din set 
                                             # plus 2, trebuie sa cautam pana la urmatorul numar 
                                             # natural nenul
        if i not in numere_date: # daca numarul nu se gaseste in set, atunci il returnam
            return i

if __name__ == "__main__":
    n = int(input("Introduceți numărul de cifre din șir: ")) # citim numarul de cifre din sir si 
                                                             # lista de numere de la tastatura
    numere = list(map(int, input("Introduceți cifrele separate prin spațiu: ").split()))
    if n < 1 or n > 100 or max(numere) > 1000000000: # verificarea restrictiilor
        print("Datele de intrare nu corespund restricțiilor impuse.")
               
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        X = gaseste_numar(n, numere) # apelam functia si afisam rezultatul
        print(f"Cel mai mic număr natural nenul care nu apare în șirul dat este: {X}")