Dada una array arr[] , la tarea es contar el número de pares desordenados de índices (i, j) tales como mcd(2, a[i]^a[j]) > 1 y mcd(2, a[i ] & a[j]) < 2 donde ^ y & son operaciones XOR bit a bit y AND bit a bit respectivamente.
Ejemplos:
Entrada: arr[] = {1, 2, 3, 4, 5}
Salida: 3
Todos los pares válidos son (1, 3), (1, 5) y (3, 5)
Entrada: arr[] = {21, 121, 13, 44, 65}
Salida: 6
Acercarse:
- gcd(2, a[i]^a[j]) > 1 solo será verdadero si tanto a[i] como a[j] son pares o impares .
- Restringiendo los pares del paso anterior, un par (a, b) nunca producirá mcd(2, a[i] & a[j]) < 2 si tanto a como b son pares . Entonces, solo los pares en los que a y b son impares satisfarán ambas condiciones dadas.
- Cuente el número de elementos impares en la array dada y guárdelo como impar y el resultado será (impar * (impar – 1)) / 2 .
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 return the count of // odd numbers in the array int countOdd(int arr[], int n) { // Variable to count odd numbers int odd = 0; for (int i = 0; i < n; i++) { // Odd number if (arr[i] % 2 == 1) odd++; } return odd; } // Function to return the count of valid pairs int countValidPairs(int arr[], int n) { int odd = countOdd(arr, n); return (odd * (odd - 1)) / 2; } // Driver Code int main() { int arr[] = { 1, 2, 3, 4, 5 }; int n = sizeof(arr) / sizeof(arr[0]); cout << countValidPairs(arr, n); return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the count of // odd numbers in the array static int countOdd(int [] arr, int n) { // Variable to count odd numbers int odd = 0; for (int i = 0; i < n; i++) { // Odd number if (arr[i] % 2 == 1) odd++; } return odd; } // Function to return the count of valid pairs static int countValidPairs(int [] arr, int n) { int odd = countOdd(arr, n); return (odd * (odd - 1)) / 2; } // Driver Code public static void main(String []args) { int [] arr = { 1, 2, 3, 4, 5 }; int n = arr.length; System.out.println(countValidPairs(arr, n)); } } // This code is contributed by ihritik
Python3
# Python3 implementation of the approach # Function to return the count of # odd numbers in the array def countOdd(arr, n): # Variable to count odd numbers odd = 0; for i in range(0, n): # Odd number if (arr[i] % 2 == 1): odd = odd + 1; return odd; # Function to return the count # of valid pairs def countValidPairs(arr, n): odd = countOdd(arr, n); return (odd * (odd - 1)) / 2; # Driver Code arr = [1, 2, 3, 4, 5 ]; n = len(arr); print(int(countValidPairs(arr, n))); # This code is contributed by # Shivi_Aggarwal
C#
// C# implementation of the approach using System; class GFG { // Function to return the count of // odd numbers in the array static int countOdd(int [] arr, int n) { // Variable to count odd numbers int odd = 0; for (int i = 0; i < n; i++) { // Odd number if (arr[i] % 2 == 1) odd++; } return odd; } // Function to return the count of valid pairs static int countValidPairs(int [] arr, int n) { int odd = countOdd(arr, n); return (odd * (odd - 1)) / 2; } // Driver Code public static void Main() { int [] arr = { 1, 2, 3, 4, 5 }; int n = arr.Length; Console.WriteLine(countValidPairs(arr, n)); } } // This code is contributed by ihritik
PHP
<?php // PHP implementation of the approach // Function to return the count of // odd numbers in the array function countOdd($arr, $n) { // Variable to count odd numbers $odd = 0; for ($i = 0; $i < $n; $i++) { // Odd number if ($arr[$i] % 2 == 1) $odd++; } return $odd; } // Function to return the count // of valid pairs function countValidPairs($arr, $n) { $odd = countOdd($arr, $n); return ($odd * ($odd - 1)) / 2; } // Driver Code $arr = array(1, 2, 3, 4, 5); $n = sizeof($arr); echo countValidPairs($arr, $n); // This code is contributed by Ryuga ?>
Javascript
<script> // Javascript implementation of the approach // Function to return the count of // odd numbers in the array function countOdd(arr, n) { // Variable to count odd numbers var odd = 0; for(var i = 0; i < n; i++) { // Odd number if (arr[i] % 2 == 1) odd++; } return odd; } // Function to return the count of valid pairs function countValidPairs(arr, n) { var odd = countOdd(arr, n); return (odd * (odd - 1)) / 2; } // Driver Code var arr = [ 1, 2, 3, 4, 5 ]; var n = arr.length; document.write(countValidPairs(arr, n)); // This code is contributed by Khushboogoyal499 </script>
Producción:
3
Complejidad de tiempo: O(N)
Espacio Auxiliar: O(1)