3587 - Duplicat
De la Universitas MediaWiki
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
def cerinta_1_si_2(n, numere, k):
aparitii = [0] * (n + 1)
for numar in numere:
aparitii[numar] += 1
frecventa_maxima = max(aparitii)
numar_repetat = aparitii.index(frecventa_maxima)
count = 0
for numar in numere:
if numar == numar_repetat:
count += 1
if count == 2:
break
index_k = numere[k - 1]
return index_k, numar_repetat
def verificare_date_intrare(n, numere, k):
if not (1 <= n <= 470000) or len(numere) != n + 1 or not all(1 <= numar <= n for numar in numere) or not (1 <= k <= n + 1):
return False
return True
# Citire numar de elemente
n = int(input("Introduceți numărul n: "))
# Citire vector de n+1 numere
numere = list(map(int, input("Introduceți n+1 numere, separate prin spațiu: ").split()))
# Citire numar k
k = int(input("Introduceți numărul k: "))
# Verificare date de intrare
if not verificare_date_intrare(n, numere, k):
print("Datele introduse nu corespund restricțiilor impuse")
else:
# Calcul și afișare rezultat
rezultat_cerinta_1, rezultat_cerinta_2 = cerinta_1_si_2(n, numere, k)
print(f"Răspuns pentru cerința 1: {rezultat_cerinta_1}")
print(f"Răspuns pentru cerința 2: {rezultat_cerinta_2}")
Explicatie
Al doilea numar din șir este 2, iar numărul 3 se repeta.