3587 - Duplicat
Cerinta
Se dau un număr n și n+1 numere naturale cuprinse între 1 și n inclusiv. Cerința 1: Pentru un număr k citit, să se afișeze al k-lea termen al șirului citit anterior. Cerința 2: Știind că dintre cele n+1 numere citite, un singur număr se poate repeta, se cere să se afișeze acest număr.
Date de intrare
Programul citește de la tastatură numărul n pe prima linie, iar apoi, pe a doua linie n+1 numere naturale, separate prin spații. Pe a treia linie se va afla numărul k.
Date de iesire
Programul va afișa pe ecran pe prima linie răspunsul pentru cerința 1, iar pe a doua linie răspunsul pentru cerința 2.
Restrictii si precizari
- 1 ≤ n ≤ 470000
- Pentru cerința 2, un singur număr se poate repeta de mai multe ori
- Atenție la limita de timp și de memorie !!!
Exemplul 1
- Intrare
- 5
- 1 2 3 3 4 5
- 2
- Iesire
- Datele introduse corespund restrictiilor impuse
- 2
- 3
Exemplul 2
- Intrare
- -5
- 1 5 0 2 2 2.6
- 4
- Iesire
- Datele introduse nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python3" line="1"> def main():
# Citirea datelor de intrare n = int(input("Introduceti numarul n: ")) numere = list(map(int, input("Introduceti n+1 numere separate prin spatii: ").split())) k = int(input("Introduceti numarul k: "))
# Cerința 1: Afișarea k-lea termen al șirului termen_k = numere[k - 1] print(f"Al {k}-lea termen al sirului este: {termen_k}")
# Cerința 2: Afișarea numărului care se repetă numar_repetat = None numere_set = set() for numar in numere: if numar in numere_set: numar_repetat = numar break numere_set.add(numar)
print(f"Numarul care se repeta este: {numar_repetat}")
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicatie
Al doilea numar din șir este 2, iar numărul 3 se repeta.