2628 - H2

From Bitnami MediaWiki

Context[edit | edit source]

În urma referendumului a rămas doar un șir de numere naturale a[1], a[2], …, a[n] .

Cerinţa[edit | edit source]

Să se determine cel mai mic număr care apare exact o dată în șir.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, apoi șirul n numere naturale, separate prin spații.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul m, reprezentând numărul minim care apare exact o dată în șir. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu respecta cerintele impuse." , iar daca se indeplinesc, se afiseaza mesajul "Datele de intrare respecta cerintele impuse."

Restricţii şi precizări[edit | edit source]

  • 10 ≤ n ≤ 1 000 000
  • 0 ≤ a[i] ≤ 2.000.000.000
  • Se garantează că există cel puțin un număr care apare o singură dată.

Exemplul 1[edit | edit source]

Intrare
10
5 3 8 7 3 3 2 5 9 5
Ieșire
Datele de intrare respecta cerintele impuse.
2

Explicație[edit | edit source]

Numerele care apar o singură dată în șir sunt: 8, 7, 2, 9. Cel mai mic este 2.

Exemplul 2[edit | edit source]

Intrare
9
5 3 8 7 3 3 2 5 9 5


Ieșire
Datele de intrare nu respecta cerintele impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def main():

   try:
       n = int(input())
       sir = list(map(int, input().split()))
       if len(sir) == n and all(0 <= numar <= 2000000000 for numar in sir):
           if 10 <= n <= 1000000:
               frecvente = {}
               aparitii = set()
               for numar in sir:
                   if numar in frecvente:
                       aparitii.discard(frecvente[numar])
                   else:
                       frecvente[numar] = 0
                       aparitii.add(numar)
               if aparitii:
                   numar_minim = min(aparitii)
                   print(f"Datele de intrare respecta cerintele impuse.")
                   print(f"Numărul minim care apare exact o dată în șir este: {numar_minim}")
               else:
                   print("Nu există niciun număr care să apară exact o dată în șir.")
           else:
               print("Datele de intrare nu respecta cerintele impuse.")
       else:
           print("Datele de intrare nu respecta cerintele impuse.")
   except ValueError:
       print("Datele de intrare nu respecta cerintele impuse.")

if __name__ == "__main__":

   main()

</syntaxhighlight>