Compruebe si el AND bit a bit de N números es par o impar

Dada una array arr[] que contiene N números. La tarea es verificar si el AND bit a bit de los N números dados es par o impar.
Ejemplos
 

Entrada: arr[] = { 2, 12, 20, 36, 38 } 
Salida: Par
Entrada: arr[] = { 3, 9, 17, 13, 15 } 
Salida: Impar 
 

Una solución simple es primero encontrar el AND de los N números dados, luego verificar si este AND es par o impar.
Una mejor solución se basa en la manipulación de bits y hechos matemáticos. 
 

  • El AND bit a bit de dos números pares cualesquiera es un número par.
  • Bitwise AND de dos números impares es un número impar.
  • AND bit a bit de un número par y un número impar es un número par.

Con base en los hechos anteriores, se puede deducir que si al menos un número par está presente en la array, el AND bit a bit de toda la array será par, de lo contrario, impar.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if the bitwise AND
// of the array elements is even or odd
void checkEvenOdd(int arr[], int n)
{
    for (int i = 0; i < n; i++) {
 
        // If at least an even element is present
        // then the bitwise AND of the
        // array elements will be even
        if (arr[i] % 2 == 0) {
 
            cout << "Even";
            return;
        }
    }
 
    cout << "Odd";
}
 
// Driver code
int main()
{
    int arr[] = { 2, 12, 20, 36, 38 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    checkEvenOdd(arr, n);
 
    return 0;
}

Java

// Java implementation of the approach
import java.io.*;
 
class GFG
{
         
// Function to check if the bitwise AND
// of the array elements is even or odd
static void checkEvenOdd(int []arr, int n)
{
    for (int i = 0; i < n; i++)
    {
 
        // If at least an even element is present
        // then the bitwise AND of the
        // array elements will be even
        if (arr[i] % 2 == 0)
        {
            System.out.print("Even");
            return;
        }
    }
    System.out.println("Odd");
}
 
// Driver code
public static void main (String[] args)
{
    int []arr = { 2, 12, 20, 36, 38 };
    int n = arr.length;
     
    checkEvenOdd(arr, n);
}
}
 
// This code is contributed by @tushil

Python3

# Python3 implementation of the approach
 
# Function to check if the bitwise AND
# of the array elements is even or odd
def checkEvenOdd(arr, n) :
 
    for i in range(n) :
 
        # If at least an even element is present
        # then the bitwise AND of the
        # array elements will be even
        if (arr[i] % 2 == 0) :
 
            print("Even", end = "");
            return;
 
    print("Odd", end = "");
 
# Driver code
if __name__ == "__main__" :
 
    arr = [ 2, 12, 20, 36, 38 ];
    n = len(arr);
 
    checkEvenOdd(arr, n);
     
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
 
class GFG
{
     
// Function to check if the bitwise AND
// of the array elements is even or odd
static void checkEvenOdd(int []arr, int n)
{
    for (int i = 0; i < n; i++)
    {
 
        // If at least an even element is present
        // then the bitwise AND of the
        // array elements will be even
        if (arr[i] % 2 == 0)
        {
            Console.Write ("Even");
            return;
        }
    }
    Console.Write ("Odd");
}
 
// Driver code
static public void Main ()
{
    int []arr = { 2, 12, 20, 36, 38 };
    int n = arr.Length;
 
    checkEvenOdd(arr, n);
}
}
 
// This code is contributed by ajit..

Javascript

<script>
    // Javascript implementation of the approach
     
    // Function to check if the bitwise AND
    // of the array elements is even or odd
    function checkEvenOdd(arr, n)
    {
        for (let i = 0; i < n; i++) 
        {
       
            // If at least an even element is present
            // then the bitwise AND of the
            // array elements will be even
            if (arr[i] % 2 == 0) 
            {
                document.write ("Even");
                return;
            }
        }
        document.write ("Odd");
    }
     
    let arr = [ 2, 12, 20, 36, 38 ];
    let n = arr.length;
   
    checkEvenOdd(arr, n);
     
</script>
Producción: 

Even

 

Complejidad de tiempo: O(N)
 

Publicación traducida automáticamente

Artículo escrito por NikhilRathor 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 *