Operaciones bit a bit en dígitos de un número

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:
 

  1. obtener el número 
     
  2. Encuentre los dígitos del número y guárdelo en una array para fines de cálculo. 
     
  3. 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)

Publicación traducida automáticamente

Artículo escrito por srijan_de y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *