Suma resultante de un arreglo cuando cada elemento es XORado por una constante.
Dado un array nums = {1,2,3} y una constante C = 4, la tarea es encontrar la suma de los elementos del array donde cada elemento es primero XOR por la constante C.
Resultado: (1⊕ 4) + (2 ⊕ 4) + (3 ⊕ 4) = 18
Cuando solo tenemos una constante, se puede hacer fácilmente, pero ¿qué pasa si tenemos K constantes? ¿Cómo podemos encontrar el resultado anterior?
Ejemplo: nums = {1,2,3}
Constantes = 4, 5, 6
Entonces, para cada constante (consultas), necesitamos evaluar la respuesta.
davy.ai
Para encontrar la suma de los elementos del arreglo XORed con K dados los valores constantes, podemos usar el siguiente algoritmo:
a. Inicializar una variable “temporal” en 0.
b. Para cada elemento “num” en el arreglo “nums”:
i. XOR “num” con la constante C, y añadir el resultado a “temporal”.
c. Añadir “temporal” a “resultado”.
Usando este algoritmo, iteramos a través de cada constante y realizamos la operación XOR con cada elemento en el arreglo. La suma de estos valores XORed se acumula en la variable “resultado”, la cual devolvemos al final.
Para el ejemplo dado, el algoritmo procedería de la siguiente manera:
a. Inicializar “temporal” en 0.
b. Para cada elemento en “nums”:
i. XOR el elemento con 4.
ii. Añadir el resultado a “temporal”.
c. Añadir “temporal” a “resultado”.
a. Inicializar “temporal” en 0.
b. Para cada elemento en “nums”:
i. XOR el elemento con 5.
ii. Añadir el resultado a “temporal”.
c. Añadir “temporal” a “resultado”.
a. Inicializar “temporal” en 0.
b. Para cada elemento en “nums”:
i. XOR el elemento con 6.
ii. Añadir el resultado a “temporal”.
c. Añadir “temporal” a “resultado”.
El resultado final sería (1⊕4)+(2⊕4)+(3⊕4) + (1⊕5)+(2⊕5)+(3⊕5) + (1⊕6)+(2⊕6)+(3⊕6) = 54.