Given a number N, the task is to perform the bitwise operations on digits of the given number N. The bitwise operations include:
- Finding the XOR of all digits of the given number N
- Finding the OR of all digits of the given number N
- Finding the AND of all digits of the given number N
Examples:
Input: N = 486 Output: XOR = 10 OR = 14 AND = 0 Input: N = 123456 Output: XOR = 10 OR = 14 AND = 0
Approach:
- Get the number
- Find the digits of the number and store it in an array for computation purpose.
- Now perform the various bitwise operations (XOR, OR, and AND) on this array one by one.
Below is the implementation of the above approach:
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> |
XOR = 7 OR = 7 AND = 0
Time Complexity: O(logN)
Auxiliary Space: O(logN)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!