0621 - Numar Lipsa: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==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 cor...
 
No edit summary
 
Line 23: Line 23:
:Datele de intrare nu corespund restricțiilor impuse.
:Datele de intrare nu corespund restricțiilor impuse.
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="">
<syntaxhighlight lang="python" line="1">
#0621 - Numar Lipsa
#0621 - Numar Lipsa
def gaseste_numar(n, numere):
def gaseste_numar(n, numere): # definim o functie care cauta cel mai mic numar natural nenul care
     numere_date = set(numere)
                              # nu apare in lista data
     for i in range(1, max(numere_date) + 2):
     numere_date = set(numere) # convertim lista de numere intr-un set pentru a elimina dublurile
         if i not in numere_date:
     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
             return i


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


      
      
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 22:20, 28 April 2023

Cerința[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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

Restricții și precizări[edit | edit source]

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

Exemplul 1[edit | edit source]

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[edit | edit source]

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

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 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}")


</syntaxhighlight>