Descripción
El problema se basa en que tenemos una lista de números donde existen pares de ellos, es decir que se repiten dos veces, excepto uno que se repite una sola vez. Debemos encontrar ese número.
La forma más sencilla de hacerlo es mediante el operador XOR, que se basa en la siguiente tabla:
A | B | A XOR B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Es decir, si A y B son iguales, entonces el resultado es 0, de lo contrario es 1. Por lo tanto, aplicando esto a números es casi lo mismo, utilizaremos la propiedad:
Que nos dice que si un número se compara con 0, el resultado es el mismo número. Por lo tanto, si tenemos una lista de números y los comparamos con el operador XOR, los números que se repiten dos veces se cancelarán y el único número que se repite una vez quedará.
ImportantPara este problema, se utiliza el módulo
sys
con las funcionesstdin
ystdout
para leer y escribir datos, respectivamente. Esto se hace para mejorar la eficiencia del programa, ya que la funcióninput()
yprint()
son más lentas lo que causa un error en el juez.
Pasos
- Leer el número de elementos de la lista.
- Inicializar una variable
result
en 0. - Iterar sobre la lista de números.
- Por cada número, aplicar el operador XOR con la variable
result
. - Al finalizar, imprimir el valor de
result
.
Código
from sys import stdin, stdout
n = int(stdin.readline())
result = 0
for x_i in range(n):
result ^= int(stdin.readline())
stdout.write(f"{result}\n")