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> |
Output:
XOR = 7 OR = 7 AND = 0
Time Complexity: O(logN)
Auxiliary Space: O(logN)