Dado un número N , la tarea es realizar las operaciones bit a bit en los dígitos del número N dado . Las operaciones bit a bit incluyen:
- Encontrar el XOR de todos los dígitos del número dado N
- Encontrar el OR de todos los dígitos del número dado N
- Encontrar el AND de todos los dígitos del número dado N
Ejemplos:
Input: N = 486 Output: XOR = 10 OR = 14 AND = 0 Input: N = 123456 Output: XOR = 10 OR = 14 AND = 0
Acercarse:
- obtener el número
- Encuentre los dígitos del número y guárdelo en una array para fines de cálculo.
- Ahora realice las diversas operaciones bit a bit ( XOR , OR y AND ) en esta array una por una.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; int digit[100000]; // Function to find the digits int findDigits(int n) { int count = 0; while (n != 0) { digit[count] = n % 10; n = n / 10; ++count; } return count; } // Function to Find OR // of all digits of a number int OR_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find OR of all digits ans = ans | digit[i]; } // return OR of digits return ans; } // Function to Find AND // of all digits of a number int AND_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find AND of all digits ans = ans & digit[i]; } // return AND of digits return ans; } // Function to Find XOR // of all digits of a number int XOR_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find XOR of all digits ans = ans ^ digit[i]; } // return XOR of digits return ans; } // Driver code void bitwise_operation(int N) { // Find and store all digits int countOfDigit = findDigits(N); // Find XOR of digits cout << "XOR = " << XOR_of_Digits(N, countOfDigit) << endl; // Find OR of digits cout << "OR = " << OR_of_Digits(N, countOfDigit) << endl; // Find AND of digits cout << "AND = " << AND_of_Digits(N, countOfDigit) << endl; } // Driver code int main() { int N = 123456; bitwise_operation(N); return 0; }
Java
// Java implementation of the approach import java.util.*; class GFG{ static int []digit = new int[100000]; // Function to find the digits static int findDigits(int n) { int count = 0; while (n != 0) { digit[count] = n % 10; n = n / 10; ++count; } return count; } // Function to Find OR // of all digits of a number static int OR_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find OR of all digits ans = ans | digit[i]; } // return OR of digits return ans; } // Function to Find AND // of all digits of a number static int AND_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find AND of all digits ans = ans & digit[i]; } // return AND of digits return ans; } // Function to Find XOR // of all digits of a number static int XOR_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find XOR of all digits ans = ans ^ digit[i]; } // return XOR of digits return ans; } // Driver code static void bitwise_operation(int N) { // Find and store all digits int countOfDigit = findDigits(N); // Find XOR of digits System.out.print("XOR = " + XOR_of_Digits(N, countOfDigit) +"\n"); // Find OR of digits System.out.print("OR = " + OR_of_Digits(N, countOfDigit) +"\n"); // Find AND of digits System.out.print("AND = " + AND_of_Digits(N, countOfDigit) +"\n"); } // Driver code public static void main(String[] args) { int N = 123456; bitwise_operation(N); } } // This code is contributed by sapnasingh4991
Python 3
# Python 3 implementation of the approach digit = [0]*(100000) # Function to find the digits def findDigits(n): count = 0 while (n != 0): digit[count] = n % 10; n = n // 10; count += 1 return count # Function to Find OR # of all digits of a number def OR_of_Digits( n,count): ans = 0 for i in range(count): # Find OR of all digits ans = ans | digit[i] # return OR of digits return ans # Function to Find AND # of all digits of a number def AND_of_Digits(n, count): ans = 0 for i in range(count): # Find AND of all digits ans = ans & digit[i] # return AND of digits return ans # Function to Find XOR # of all digits of a number def XOR_of_Digits(n, count): ans = 0 for i in range(count): # Find XOR of all digits ans = ans ^ digit[i] # return XOR of digits return ans # Driver code def bitwise_operation( N): # Find and store all digits countOfDigit = findDigits(N) # Find XOR of digits print("XOR = ",XOR_of_Digits(N, countOfDigit)) # Find OR of digits print("OR = ",OR_of_Digits(N, countOfDigit)) # Find AND of digits print("AND = ",AND_of_Digits(N, countOfDigit)) # Driver code N = 123456; bitwise_operation(N) # This code is contributed by apurva raj
C#
// C# implementation of the approach using System; class GFG{ static int []digit = new int[100000]; // Function to find the digits static int findDigits(int n) { int count = 0; while (n != 0) { digit[count] = n % 10; n = n / 10; ++count; } return count; } // Function to Find OR // of all digits of a number static int OR_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find OR of all digits ans = ans | digit[i]; } // return OR of digits return ans; } // Function to Find AND // of all digits of a number static int AND_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find AND of all digits ans = ans & digit[i]; } // return AND of digits return ans; } // Function to Find XOR // of all digits of a number static int XOR_of_Digits(int n, int count) { int ans = 0; for (int i = 0; i < count; i++) { // Find XOR of all digits ans = ans ^ digit[i]; } // return XOR of digits return ans; } // Driver code static void bitwise_operation(int N) { // Find and store all digits int countOfDigit = findDigits(N); // Find XOR of digits Console.Write("XOR = " + XOR_of_Digits(N, countOfDigit) +"\n"); // Find OR of digits Console.Write("OR = " + OR_of_Digits(N, countOfDigit) +"\n"); // Find AND of digits Console.Write("AND = " + AND_of_Digits(N, countOfDigit) +"\n"); } // Driver code public static void Main(String[] args) { int N = 123456; bitwise_operation(N); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript implementation of the approach let digit = []; // Function to find the digits function findDigits(n) { let count = 0; while (n != 0) { digit[count] = n % 10; n = n / 10; ++count; } return count; } // Function to Find OR // of all digits of a number function OR_of_Digits(n, count) { let ans = 0; for (let i = 0; i < count; i++) { // Find OR of all digits ans = ans | digit[i]; } // return OR of digits return ans; } // Function to Find AND // of all digits of a number function AND_of_Digits(n, count) { let ans = 0; for (let i = 0; i < count; i++) { // Find AND of all digits ans = ans & digit[i]; } // return AND of digits return ans; } // Function to Find XOR // of all digits of a number function XOR_of_Digits(n, count) { let ans = 0; for (let i = 0; i < count; i++) { // Find XOR of all digits ans = ans ^ digit[i]; } // return XOR of digits return ans; } // Driver code function bitwise_operation(N) { // Find and store all digits let countOfDigit = findDigits(N); // Find XOR of digits document.write("XOR = " + XOR_of_Digits(N, countOfDigit) + "<br/>"); // Find OR of digits document.write("OR = " + OR_of_Digits(N, countOfDigit) + "<br/>"); // Find AND of digits document.write("AND = " + AND_of_Digits(N, countOfDigit) + "<br/>"); } // Driver Code let N = 123456; bitwise_operation(N); </script>
Producción:
XOR = 7 OR = 7 AND = 0
Complejidad de Tiempo: O(logN)
Espacio Auxiliar: O(logN)