3291 - Memory010
Cerinţa
Se citesc numere naturale cuprinse între 1 și 30.000.000 până la întâlnirea numărului 0. Să se afișeze valoarea duplicat.
Date de intrare
Programul citește de la tastatură maxim 1.000.000 de numere cuprinse între 1 și 30.000.000.
Date de ieșire
Programul va afișa pe ecran numărul d, reprezentând valoarea duplicată.
Restricţii şi precizări
- între numerele citite se află cu siguranță un număr duplicat
Exemplu
- Intrare
- 12 3 8 10 5 8 2 0
- Iesire
- Datele de intrare corespund restrictiilor impuse
- 8
Exemplu 2
- Intrare
- 12 3 8 10 5 8 2 a
- Iesire
- Datele de intrare nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python" line> def validare(nr, bare1): # functia de validare a datelor de intrare
if len(bare1) != nr or bare1[-1] != 0: raise ValueError
if nr > 1000000: raise ValueError
for bara1 in bare1[:-1]: if not isinstance(bara1, int) or bara1 < 0 or bara1 > 1000: raise ValueError
print("Datele de intrare corespund restrictiilor impuse")
def find_duplicate(numere1):
numere_intalnite = set() # Creăm un set pentru a urmări numerele întâlnite for numar in numere1: if numar in numere_intalnite: # Dacă numărul a fost întâlnit deja return numar # Returnăm numărul duplicat numere_intalnite.add(numar) # Altfel, adăugăm numărul în set return None # Dacă nu găsim niciun număr duplicat, returnăm None
if __name__ == '__main__':
# din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam try: numere = list(map(int, input("Introduceți numerele, separate prin spații (terminați cu 0): ").split())) n = len(numere)
validare(n, numere) # apelul functiei de validare duplicat = find_duplicate(numere[:-1]) # apelul functiei de rezolvare
if duplicat is not None: # Dacă am găsit un duplicat print("Valoarea duplicată este:", duplicat) else: print("Nu s-a găsit niciun număr duplicat.") # Altfel, afișăm un mesaj
except ValueError: print("Datele de intrare nu corespund restrictiilor impuse") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>