Dado un número N , la tarea es encontrar el OR bit a bit (|) de todos los números pares del 1 al N.
Ejemplos:
Entrada: 2
Salida: 2Entrada: 10
Salida: 14
Explicación: 2 | 4 | 6 | 8 | 10 = 14
Enfoque ingenuo: inicialice el resultado como 2. Itere el ciclo de 4 a n (para todos los números pares) y actualice el resultado encontrando bit a bit o ( | ).
A continuación se muestra la implementación del enfoque:
C++
// C++ implementation of the above approach #include <iostream> using namespace std; // Function to return the bitwise OR // of all the even numbers upto N int bitwiseOrTillN(int n) { // Initialize result as 2 int result = 2; for (int i = 4; i <= n; i = i + 2) { result = result | i; } return result; } // Driver code int main() { int n = 10; cout << bitwiseOrTillN(n); return 0; }
Java
// Java implementation of the above approach class GFG { // Function to return the bitwise OR // of all the even numbers upto N static int bitwiseOrTillN(int n) { // Initialize result as 2 int result = 2; for (int i = 4; i <= n; i = i + 2) { result = result | i; } return result; } // Driver code static public void main (String args[]) { int n = 10; System.out.println(bitwiseOrTillN(n)); } } // This code is contributed by AnkitRai01
Python3
# Python 3 implementation of the above approach # Function to return the bitwise OR # of all the even numbers upto N def bitwiseOrTillN ( n ): # Initialize result as 2 result = 2; for i in range(4, n + 1, 2) : result = result | i return result # Driver code n = 10; print(bitwiseOrTillN(n)); # This code is contributed by ANKITKUMAR34
C#
// C# implementation of the above approach using System; class GFG { // Function to return the bitwise OR // of all the even numbers upto N static int bitwiseOrTillN(int n) { // Initialize result as 2 int result = 2; for (int i = 4; i <= n; i = i + 2) { result = result | i; } return result; } // Driver code static public void Main () { int n = 10; Console.WriteLine(bitwiseOrTillN(n)); } } // This code is contributed by AnkitRai01
Javascript
<script> // Javascript implementation of the above approach // Function to return the bitwise OR // of all the even numbers upto N function bitwiseOrTillN(n) { // Initialize result as 2 var result = 2; for(var i = 4; i <= n; i = i + 2) { result = result | i; } return result; } // Driver code var n = 10; document.write( bitwiseOrTillN(n)); // This code is contributed by noob2000 </script>
Producción:
14
Enfoque eficiente: calcule el número total de bits en N . En OR bit a bit, el bit más a la derecha será 0 y todos los demás bits serán 1. Por lo tanto, devuelve pow(2, número total de bits)-2. Dará el valor equivalente en decimal de OR bit a bit.
A continuación se muestra la implementación del enfoque:
C++
// C++ implementation of the above approach #include <iostream> #include <math.h> using namespace std; // Function to return the bitwise OR // of all even numbers upto N int bitwiseOrTillN(int n) { // For value less than 2 if (n < 2) return 0; // Count total number of bits in bitwise or // all bits will be set except last bit int bitCount = log2(n) + 1; // Compute 2 to the power bitCount and subtract 2 return pow(2, bitCount) - 2; } // Driver code int main() { int n = 10; cout << bitwiseOrTillN(n); return 0; }
Java
// Java implementation of the above approach class GFG { // Function to return the bitwise OR // of all even numbers upto N static int bitwiseOrTillN(int n) { // For value less than 2 if (n < 2) return 0; // Count total number of bits in bitwise or // all bits will be set except last bit int bitCount = (int)(Math.log(n)/Math.log(2)) + 1; // Compute 2 to the power bitCount and subtract 2 return (int)Math.pow(2, bitCount) - 2; } // Driver code public static void main (String[] args) { int n = 10; System.out.println(bitwiseOrTillN(n)); } } // This code is contributed by AnkitRai01
Python3
# Python3 implementation of the above approach from math import log2 # Function to return the bitwise OR # of all even numbers upto N def bitwiseOrTillN(n) : # For value less than 2 if (n < 2) : return 0; # Count total number of bits in bitwise or # all bits will be set except last bit bitCount = int(log2(n)) + 1; # Compute 2 to the power bitCount and subtract 2 return pow(2, bitCount) - 2; # Driver code if __name__ == "__main__" : n = 10; print(bitwiseOrTillN(n)); # This code is contributed by AnkitRai01
C#
// C# implementation of the above approach using System; class GFG { // Function to return the bitwise OR // of all even numbers upto N static int bitwiseOrTillN(int n) { // For value less than 2 if (n < 2) return 0; // Count total number of bits in bitwise or // all bits will be set except last bit int bitCount = (int)(Math.Log(n)/Math.Log(2)) + 1; // Compute 2 to the power bitCount and subtract 2 return (int)Math.Pow(2, bitCount) - 2; } // Driver code public static void Main() { int n = 10; Console.WriteLine(bitwiseOrTillN(n)); } } // This code is contributed by AnkitRai01
Javascript
<script> // Javascript implementation of the approach // Function to return the bitwise OR // of all even numbers upto N function bitwiseOrTillN(n) { // For value less than 2 if (n < 2) return 0; // Count total number of bits in bitwise or // all bits will be set except last bit var bitCount = parseInt(Math.log2(n) + 1); // Compute 2 to the power bitCount and subtract 2 return Math.pow(2, bitCount) - 2; } // Driver code var n = 10; document.write( bitwiseOrTillN(n)); //This code is contributed by SoumikMondal </script>
Producción:
14