3587 - Duplicat

From Bitnami MediaWiki
Revision as of 10:59, 27 December 2023 by Mesarosdenisa (talk | contribs)

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 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


  1. Citire numar de elemente

n = int(input("Introduceti numarul n: "))

  1. Citire vector de n+1 numere

numere = list(map(int, input("Introduceti n+1 numere, separate prin spatiu: ").split()))

  1. Citire numar k

k = int(input("Introduceti numarul k: "))

  1. Calcul si afisare rezultat

rezultat_cerinta_1, rezultat_cerinta_2 = cerinta_1_si_2(n, numere, k) print(f"Raspuns pentru cerinta 1: {rezultat_cerinta_1}") print(f"Raspuns pentru cerinta 2: {rezultat_cerinta_2}")

</syntaxhighlight>

Explicatie

Al doilea numar din șir este 2, iar numărul 3 se repeta.