Dada una matriz entera, ¿cómo podemos verificar si cada suma acumulativa es divisible por 2 o no usando XOR?

Gracias por A2A 🙂

#include
usando el espacio de nombres estándar;
vote computeParity (unsigned int a [], int length) {
suma sin signo = a [0];
si (suma & 1) {
cout << 1 << ",";
}
más{
cout << 0 << ",";
}
para (auto i = 1; i <longitud; i ++) {
suma = suma ^ a [i];
si (suma & 1) {
cout << 1 << ",";
}
más{
cout << 0 << ",";
}
}
}
int main () {
unsigned int a [] = {1,2,3,4,5,6};
int len ​​= sizeof (a) / sizeof (a [0]);
computeParity (a, len);
devuelve 0;
}

Enlace a ideone Ideone.com

¿Veamos cómo funciona esto?
Como necesitamos verificar solo LSB (bit menos significativo) para paridad si es 1, entonces es paridad es 1 más paridad 0. Como sabemos, podemos verificar si LSB está configurado o no usando N & 1.
Pero aún necesitamos actualizar LSB para probar la condición anterior.
Como sabemos, la suma del número binario viene dada por lo siguiente.
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (10 pero solo necesitamos verificar LSB, así que dejamos todos los bits excepto LSB)
La secuencia anterior se puede obtener usando XOR para que podamos encontrar la paridad como
a = a32a31a30a29… a1a0
b = b32b31b30b29… b1b0
(a XOR b) & 1 = (a0 XOR b0) Y 1

More Interesting

Dada una matriz de 'n' enteros. ¿Encuentra los números 'k' de manera que la diferencia mínima de todos los pares posibles de números 'k' sea máxima (máxima entre otras diferencias mínimas para varias posibles selecciones de números k)?

¿Por qué fallaste en tu entrevista técnica de software?

¿Es la complejidad del tiempo una preocupación en la ronda de codificación en línea de Amazon, Morgan Stanley y otras grandes empresas?

¿Importa la experiencia en la programación de entrevistas?

¿La velocidad de escritura de un candidato indica algo sobre su habilidad como desarrollador?

¿Cuáles son algunas preguntas frecuentes de la entrevista en cs / it branch? (Con respuestas)

Dada una matriz entera y un número constante X, imprima todos los pares de números en la matriz cuyo producto es igual a X. Seguimiento: ¿cómo lo hará en O (n)? ¿Cómo manejarás los pares duplicados?

¿Cómo es realizar entrevistas tecnológicas en tu alma mater?

Cómo estar bien preparado para responder algoritmos y estructuras de datos en una entrevista de Google

¿Puedo usar Python para codificar entrevistas en compañías como Google, Facebook y Microsoft, o necesito codificar en C ++ / Java?

¿Los libros sobre preguntas de entrevistas de programación ayudan a los candidatos?

Si soy ecológico en TopCoder, ¿puedo pasar entrevistas a las principales empresas tecnológicas? ¿La mayoría de las personas que aprueban las entrevistas tienen la capacidad de salir bien en las competencias de TopCoder? Si me fuera mejor en los concursos de TopCoder, ¿se transferirían las habilidades a las entrevistas?

Dada una matriz de n elementos ordenados por el valor absoluto, ¿cómo encuentra dos elementos a + b que se suman a k {1, 3, -4, 6, -8, 12} K = 4 O (n)?

¿En qué áreas debe concentrarse un programador Java experimentado de nueve años mientras se prepara para una entrevista tecnológica en Amazon IDC?

¿Las personas con experiencia se prepararán mucho para las entrevistas? En caso afirmativo, ¿qué tipo de habilidades buscan las empresas en los ingenieros superiores frente a los de primer año?