Dado un número entero N , la tarea es contar el número de números enteros (digamos x ) en el rango [0, 2 N −1] tal que x⊕(x+1) = (x+2)⊕(x+3) . [donde ⊕ representa bit a bit Xor]
Ejemplos :
Entrada : N = 1
Salida : 1
Explicación : Solo 0 es la x válida, ya que, 0 ⊕ 1 = 2 ⊕ 3 = 1Entrada : N = 3
Salida : 4
Enfoque ingenuo : el enfoque simple para resolver el problema dado es generar todos los valores posibles de x en el rango [0, 2 N −1] y verificar si satisfacen los criterios dados, es decir, x⊕(x+1) = (x+ 2)⊕(x+3) .
Siga los pasos mencionados a continuación para implementar la idea:
- Iterar de i = 0 a N .
- Comprobar si (i ⊕ (i+1)) = ((i+2) ⊕ (i+3))
- Si se cumple la condición, incremente la cuenta de dichos números.
- Devuelve el conteo final como la respuesta.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ code to implement the approach #include <bits/stdc++.h> using namespace std; // Function to find number of integers // satisfying the condition int countOfvalues(int N) { // Stores the resultant count of pairs int count = 0; for (int i = 0; i < (1 << N); i++) { // Iterate over the range if ((i ^ (i + 1)) == ((i + 2) ^ (i + 3))) count += 1; } return count; } // Driver Code int main() { int N = 3; // Function call cout << countOfvalues(N); return 0; } // This code is contributed by Rohit Pradhan
Java
// Java code to implement the approach class GFG { // Function to find number of integers // satisfying the condition public static int countOfvalues(int N) { // Stores the resultant count of pairs int count = 0; for (int i = 0; i < (1 << N); i++) { // Iterate over the range if ((i ^ (i + 1)) == ((i + 2) ^ (i + 3))) count += 1; } return count; } // Driver code public static void main(String[] args) { int N = 3; // Function call System.out.println(countOfvalues(N)); } } // This code is contributed by phasing17
Python3
# Python3 code to implement the approach # Function to find number of integers # satisfying the condition def countOfvalues(N): # Stores the resultant count of pairs count = 0 for i in range(0, 2**N): # Iterate over the range if i ^ (i + 1) == (i + 2) ^ (i + 3): count += 1 return count # Driver Code if __name__ == '__main__': N = 3 # Function call print(countOfvalues(N))
C#
// C# Program of the above approach using System; class GFG { // Function to find number of integers // satisfying the condition public static int countOfvalues(int N) { // Stores the resultant count of pairs int count = 0; for (int i = 0; i < (1 << N); i++) { // Iterate over the range if ((i ^ (i + 1)) == ((i + 2) ^ (i + 3))) count += 1; } return count; } // Driver Code public static void Main () { int N = 3; // Function call Console.Write(countOfvalues(N)); } } // This code is contributed by sanjoy_62.
Javascript
<script> // JavaScript code for the above approach // Function to find number of integers // satisfying the condition function countOfvalues(N) { // Stores the resultant count of pairs let count = 0; for (let i = 0; i < (1 << N); i++) { // Iterate over the range if ((i ^ (i + 1)) == ((i + 2) ^ (i + 3))) count += 1; } return count; } // Driver Code let N = 3; // Function call document.write(countOfvalues(N)); // This code is contributed by Potta Lokesh </script>
4
Complejidad de Tiempo : O(2 N )
Espacio Auxiliar : O(1)
Enfoque eficiente: el problema se puede resolver de manera eficiente con base en la siguiente idea matemática:
- Si x es tal que es un número par, entonces x+2 también es un número par y tanto (x+1) como (x+3) serán números impares.
- Ahora, dos números pares e impares consecutivos tienen solo una diferencia de un bit solo en su posición LSB.
- Entonces, el XOR bit a bit de ( x y x+1 ) y ( x+2 y x+3 ) ambos serán 1 , cuando x es par.
- Por lo tanto, todos los números pares en el rango dado [0, 2 N −1] es un valor posible de x.
Entonces, el número total de tales valores es (2 N – 1)/2 = 2 N-1
Siga la ilustración a continuación para visualizar mejor la idea:
Ilustración:
Considere N = 3 . Entonces los números están en el rango [0, 7]
Todos los números pares en el rango son 0, 2, 4 y 6
=> Cuando x = 0: 0 ⊕ 1 = 1 y 2 ⊕ 3 = 1. Por lo tanto, la relación se cumple
=> Cuando x = 2: 2 ⊕ 3 = 1 y 4 ⊕ 5 = 1. Por lo tanto, la relación se cumple
=> Cuando x = 4. 4 ⊕ 5 = 1 y 6 ⊕ 7 = 1. Por lo tanto, la relación se cumple
=> Cuando x = 6: 6 ⊕ 7 = 1 y 8 ⊕ 9 = 1. Por lo tanto, la relación se cumple.Ahora para los números impares si se hace:
=> Cuando x = 1: 1 ⊕ 2 = 3 y 3 ⊕ 4 = 7. Por lo tanto, la relación no se cumple.
=> Cuando x = 3: 3 ⊕ 4 = 7 y 5 ⊕ 6 = 3. Por lo tanto, la relación no se cumple.
=> Cuando x = 5: 5 ⊕ 6 = 3 y 7 ⊕ 8 = 15. Por lo tanto, la relación no se cumple.
=> Cuando x = 7: 7 ⊕ 8 = 15 y 9 ⊕ 10 = 3. Por lo tanto, la relación no se cumple.Así que los valores totales posibles son 4 = 2 3-1
Por lo tanto, para obtener la respuesta, calcule el valor de 2 N-1 para N dado
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ code to implement the above approach #include <bits/stdc++.h> using namespace std; // Function to calculate // the number of possible values int countValues(int N) { return pow(2, N - 1); } // Driver Code int main() { int N = 3; // Function call cout << countValues(N); return 0; } // This code is contributed by Rohit Pradhan
Java
// Java code to implement the above approach class GFG { // Function to calculate // the number of possible values public static int countValues(int N) { return (int)Math.pow(2, N - 1); } public static void main(String[] args) { int N = 3; // Function call System.out.println(countValues(N)); } } //This code is contributed by phasing17
Python3
# Python code to implement the above approach # Function to calculate # the number of possible values def countOfValues (N): return pow(2, N - 1) # Driver code if __name__ == '__main__': N = 3 # Function call res = countOfValues(N) print(res)
C#
// C# program for above approach using System; using System.Collections.Generic; public class GFG { // Function to calculate // the number of possible values public static int countValues(int N) { return (int)Math.Pow(2, N - 1); } // Driver code public static void Main(String[] args) { int N = 3; // Function call Console.Write(countValues(N)); } } // This code is contributed by code_hunt.
Javascript
<script> // JavaScript code to implement the above approach // Function to calculate // the number of possible values function countValues(N) { return Math.pow(2, N - 1); } // Driver Code let N = 3; // Function call document.write(countValues(N)); // This code is contributed by shinjanpatra </script>
4
Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por carpediemist y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA