Recuento de pares con valor XOR bit a bit mayor que su valor AND bit a bit

Dada una array arr que contiene N enteros positivos. Encuentre el recuento de todos los pares posibles cuyo valor XOR bit a bit sea mayor que el valor AND bit a bit

Ejemplos :

Entrada : arr[]={ 12, 4, 15}
Salida : 2
Explicación : 12 ^ 4 = 8, 12 y 4 = 4. entonces 12 ^ 4 > 12 y 4
                       4 ^ 15 = 11, 4 y 15 = 4. entonces 4 ^ 15 > 4 y 15 . 
Entonces, los dos anteriores son pares válidos { 12, 4 }, {4, 15} .

Entrada:  arr[] = { 1, 1, 3, 3 }
Salida: 4

 

Enfoque: consulte la siguiente idea para el enfoque para resolver este problema:

Sabemos que, para un arreglo de longitud N, habrá un total de (N*(N-1))/2 pares. 

Por lo tanto, verifique cada par y aumente la cuenta en uno si un par satisface la condición dada en la pregunta. 

Siga los pasos a continuación para resolver este problema:

  • Verifique para cada par si el valor XOR en bits es mayor que AND en bits o no.
  • Si es así, aumente el conteo
  • Devuelve la cuenta.

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ program to Count number of pairs
// whose bit wise XOR value is greater
// than bit wise AND value
 
#include <bits/stdc++.h>
using namespace std;
 
// Function that return count of pairs
// whose bitwise xor >= bitwise
long long valid_pairs(int arr[], int N)
{
    long long cnt = 0;
    // check for all possible pairs
    for (int i = 0; i < N; i++) {
        for (int j = i + 1; j < N; j++) {
            if ((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))
                cnt++;
        }
    }
 
    return cnt;
}
 
// Driver Code
int main()
{
    int N = 3;
    int arr[] = { 12, 4, 15 };
    cout << valid_pairs(arr, N);
}

Java

// Java program to Count number of pairs
// whose bit wise XOR value is greater
// than bit wise AND value
import java.io.*;
 
class GFG
{
 
  // Function that return count of pairs
  // whose bitwise xor >= bitwise
  public static long valid_pairs(int arr[], int N)
  {
    long cnt = 0;
 
    // check for all possible pairs
    for (int i = 0; i < N; i++) {
      for (int j = i + 1; j < N; j++) {
        if ((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))
          cnt++;
      }
    }
 
    return cnt;
  }
 
  // Driver code
  public static void main(String[] args)
  {
    int N = 3;
    int arr[] = { 12, 4, 15 };
    System.out.print(valid_pairs(arr, N));
  }
}
 
// This code is contributed by Rohit Pradhan.

Python3

# python3 program to Count number of pairs
# whose bit wise XOR value is greater
# than bit wise AND value
 
# Function that return count of pairs
# whose bitwise xor >= bitwise
def valid_pairs(arr, N):
 
    cnt = 0
     
    # check for all possible pairs
    for i in range(0, N):
        for j in range(i + 1, N):
            if ((arr[i] ^ arr[j]) >= (arr[i] & arr[j])):
                cnt += 1
 
    return cnt
 
# Driver Code
if __name__ == "__main__":
 
    N = 3
    arr = [12, 4, 15]
    print(valid_pairs(arr, N))
 
    # This code is contributed by rakeshsahni

C#

// C# program to Count number of pairs
// whose bit wise XOR value is greater
// than bit wise AND value
using System;
 
class GFG {
 
  // Function that return count of pairs
  // whose bitwise xor >= bitwise
  public static long valid_pairs(int[] arr, int N)
  {
    long cnt = 0;
 
    // check for all possible pairs
    for (int i = 0; i < N; i++) {
      for (int j = i + 1; j < N; j++) {
        if ((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))
          cnt++;
      }
    }
 
    return cnt;
  }
 
  // Driver code
  public static void Main(string[] args)
  {
    int N = 3;
    int[] arr = { 12, 4, 15 };
    Console.Write(valid_pairs(arr, N));
  }
}
 
// This code is contributed by ukasp.

Javascript

<script>
       // JavaScript code for the above approach
 
 
       // Function that return count of pairs
       // whose bitwise xor >= bitwise
       function valid_pairs(arr, N) {
           let cnt = 0;
           // check for all possible pairs
           for (let i = 0; i < N; i++) {
               for (let j = i + 1; j < N; j++) {
                   if ((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))
                       cnt++;
               }
           }
 
           return cnt;
       }
 
       // Driver Code
 
       let N = 3;
       let arr = [12, 4, 15];
       document.write(valid_pairs(arr, N));
 
   // This code is contributed by Potta Lokesh
   </script>
Producción

2

Complejidad de tiempo : O(N*N)
Espacio auxiliar : O(1)

Publicación traducida automáticamente

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