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
- ¿Cómo encontrar el número de subcadenas que son anagramas de palíndromos en una cadena en tiempo lineal?
- En una entrevista técnica, ¿debo implementar las estructuras de datos auxiliares o usarlas de la biblioteca estándar?
- ¿Algoritmo de libros o proyecto de código abierto para ser contratado por empresas tecnológicas de San Francisco como Google?
- ¿Cuáles son algunos sitios web similares a CareerCup que ofrecen preguntas de entrevistas en varias compañías?
- Preguntas de la entrevista técnica: ¿Cómo determino si una matriz sin clasificar contiene duplicados difusos dentro de k índices entre sí?
¿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