0415 - unique

From Bitnami MediaWiki

Sursa: Unique


Cerinţa

Dându-se un șir de numere naturale, să se determine câte dintre ele apar o singură dată.

Date de intrare

Programul citește de la tastatură cel mult 1.000.000 de numere naturale.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi se va afișa pe ecran numărul de numere care apar o singură dată în șir. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricţii şi precizări

  • numerele citite vor fi mai mici decât 200.000
  • în șir sunt cel puțin un număr și cel mult 1.000.000 de numere naturale

Exemple

Exemplul 1

Intrare
5 4 3 2 3 3 5 6 4 3 3
Ieșire
Datele sunt corecte.
2

Exemplul 2

Intrare
1234542 34 1 2 313 231 31
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3

Intrare
100 100 100 100 100 100 200 200
Ieșire
Datele sunt corecte.
0


Rezolvare

<syntaxhighlight lang="python" line>

  1. 4015 unique

def numarare_elemente(vector):

   numar_unice = 0
   for i in range(len(vector)):
       if vector.count(i) == 1:
           numar_unice += 1
   print(numar_unice)


def conform_restrictiilor():

   vector = list(map(int, input().split()))
   for x in vector:
       if x > 200000:
           print("Datele nu sunt comform restricțiilor impuse.")
           exit()
   if len(vector) > 1000000 or len(vector) == 0:
       print("Datele nu sunt comform restricțiilor impuse.")
       exit()
   print("Datele sunt corecte.")
   return vector


if __name__ == '__main__':

   vector = conform_restrictiilor()
   numarare_elemente(vector)




</syntaxhighlight>

Explicaţie cod

Acest cod constă în două funcții separate. Funcția conform_restrictiilor() primește datele de intrare sub formă de vector și verifică dacă acestea respectă anumite restricții, adică dacă toate valorile din vector sunt mai mici sau egale cu 200000 și dacă lungimea vectorului este între 1 și 1000000. Dacă aceste restricții nu sunt respectate, se afișează un mesaj de eroare și se iese din program. Dacă datele sunt valide, funcția returnează vectorul.

Funcția numarare_elemente(vector) primește vectorul returnat de funcția conform_restrictiilor() și calculează numărul de elemente unice din vector. Mai precis, funcția initializează un contor la zero și parcurge vectorul. Pentru fiecare element din vector, funcția verifică dacă numărul de apariții al elementului în vector este egal cu 1. Dacă da, atunci acesta este un element unic și contorul este incrementat. La final, funcția afișează numărul de elemente unice găsite.

Codul conține și o secțiune if __name__ == '__main__': care verifică dacă acesta este fișierul principal care este executat și, în caz afirmativ, apelează funcțiile conform_restrictiilor() și numarare_elemente(vector) pentru a efectua operațiile necesare.