Считайте пары с помощью побитового XOR как ЧЕТНОЕ число
Для массива из N целых чисел задача состоит в том, чтобы найти количество пар (i, j) таких, что A [i] ^ A [j] четно.
Примеры:
Ввод: A [] = {5, 4, 7, 2, 1}
Выход: 4
Поскольку пара A [] =
(5, 4) = 1 (5, 7) = 2 (5, 2) = 7 (5, 1) = 4
(4, 7) = 3 (4, 2) = 6 (4, 1) = 5
(7, 2) = 5 (7, 1) = 6
(2, 1) = 3
Всего четных пар XOR = 4
Ввод: A [] = {7, 2, 8, 1, 0, 5, 11}
Выход: 9
Поскольку пара A [] =
(7, 2) = 5 (7, 8) = 15 (7, 1) = 6 (7, 0) = 7 (7, 5) = 2 (7, 11) = 12
(2, 8) = 10 (2, 1) = 3 (2, 0) = 2 (2, 5) = 7 (2, 11) = 9
(8, 1) = 9 (8, 0) = 8 (8, 5) = 13 (8, 11) = 3
(1, 0) = 1 (1, 5) = 4 (1, 11) = 10
(0, 5) = 5 (0, 11) = 11
(5, 11) = 14Наивный подход - проверить каждую пару и вывести количество четных пар.
Ниже представлена реализация описанного выше подхода:
C ++
// C++ program to count pairs// with XOR giving a even number#include <iostream>using namespace std;// Function to count number of even pairsint findevenPair( int A[], int N){ int i, j; // variable for counting even pairs int evenPair = 0; // find all pairs for (i = 0; i < N; i++) { for (j = i + 1; j < N; j++) { // find XOR operation // check even or even if ((A[i] ^ A[j]) % 2 == 0) evenPair++; } } // return number of even pair return evenPair;}// Driver Codeint main(){ int A[] = { 5, 4, 7, 2, 1 }; int N = sizeof (A) / sizeof (A[0]); // calling function findevenPair // and print number of even pair cout << findevenPair(A, N) << endl; return 0;} |
Джава
// Java program to count pairs// with XOR giving a even numberimport java.io.*;class GFG{// Function to count number of even pairsstatic int findevenPair( int []A, int N){ int i, j; // variable for counting even pairs int evenPair = 0 ; // find all pairs for (i = 0 ; i < N; i++) { for (j = i + 1 ; j < N; j++) { // find XOR operation // check even or even if ((A[i] ^ A[j]) % 2 == 0 ) evenPair++; } } // return number of even pair return evenPair;}// Driver Codepublic static void main (String[] args){ int A[] = { 5 , 4 , 7 , 2 , 1 }; int N = A.length; // calling function findevenPair // and print number of even pair System.out.println(findevenPair(A, N));}}// This code is contributed by inder_verma.. |
Python3
# Python3 program to count pairs# with XOR giving a even number # Function to count number of even pairsdef findevenPair(A, N): # variable for counting even pairs evenPair = 0 # find all pairs for i in range ( 0 , N): for j in range (i + 1 , N): # find XOR operation # check even or even if ((A[i] ^ A[j]) % 2 = = 0 ): evenPair + = 1 # return number of even pair return evenPair; # Driver Codedef main(): A = [ 5 , 4 , 7 , 2 , 1 ] N = len (A) # calling function findevenPair # and prnumber of even pair print (findevenPair(A, N)) if __name__ = = '__main__' : main()# This code is contributed by PrinciRaj1992 |
C #
// C# program to count pairs// with XOR giving a even numberusing System;class GFG{// Function to count number of// even pairsstatic int findevenPair( int []A, int N){ int i, j; // variable for counting even pairs int evenPair = 0; // find all pairs for (i = 0; i < N; i++) { for (j = i + 1; j < N; j++) { // find XOR operation // check even or even if ((A[i] ^ A[j]) % 2 == 0) evenPair++; } } // return number of even pair return evenPair;}// Driver Codepublic static void Main (){ int []A = { 5, 4, 7, 2, 1 }; int N = A.Length; // calling function findevenPair // and print number of even pair Console.WriteLine(findevenPair(A, N));}}// This code is contributed// by inder_verma.. |
PHP
<?php// PHP program to count pairs// with XOR giving a even number// Function to count number// of even pairsfunction findevenPair(& $A , $N ){ // variable for counting even pairs $evenPair = 0; // find all pairs for ( $i = 0; $i < $N ; $i ++) { for ( $j = $i + 1; $j < $N ; $j ++) { // find XOR operation // check even or even if (( $A [ $i ] ^ $A [ $j ]) % 2 == 0) $evenPair ++; } } // return number of even pair return $evenPair ;}// Driver Code$A = array (5, 4, 7, 2, 1 );$N = sizeof( $A );// calling function findevenPair// and print number of even pairecho (findevenPair( $A , $N ));// This code is contributed// by Shivi_Aggarwal?> |
Javascript
<script>// Javascript program to count pairs// with XOR giving a even number// Function to count number of even pairsfunction findevenPair(A, N){ let i, j; // variable for counting even pairs let evenPair = 0; // find all pairs for (i = 0; i < N; i++) { for (j = i + 1; j < N; j++) { // find XOR operation // check even or even if ((A[i] ^ A[j]) % 2 == 0) evenPair++; } } // return number of even pair return evenPair;}// Driver Codelet A = [ 5, 4, 7, 2, 1 ];let N = A.length;// calling function findevenPair// and print number of even pairdocument.write(findevenPair(A, N));// This code is contributed by souravmahato348.</script> |
4
Сложность времени: O (n ^ 2)
Эффективным решением является подсчет пар с помощью побитового XOR как нечетного числа, то есть oddEvenpairs. Затем верните totalPairs - oddEvenPairs, где totalPairs = (N * (N-1) / 2) и oddEvenPairs = count * (N - count) . Поскольку пары, которые дадут четное побитовое исключающее ИЛИ, следующие:
Even, Even
Odd, Odd
Итак, найдите количество пар как с нечетными, так и с четными элементами и вычтите из общего числа. пар.
Ниже представлена реализация описанного выше подхода:
C ++
// C++ program to count pairs// with XOR giving a even number#include <iostream>using namespace std;// Function to count number of even pairsint findEvenPair( int A[], int N){ int count = 0; // find all pairs for ( int i = 0; i < N; i++) { if (A[i] % 2 != 0) count++; } int totalPairs = (N * (N - 1) / 2); int oddEvenPairs = count * (N - count); // return number of even pair return totalPairs - oddEvenPairs;}// Driver Codeint main(){ int a[] = { 5, 4, 7, 2, 1 }; int n = sizeof (a) / sizeof (a[0]); // calling function findEvenPair // and print number of even pair cout << findEvenPair(a, n) << endl; return 0;} |
Джава
// Java program to count pairs// with XOR giving a even numberimport java.io.*;class GFG { // Function to count number of even pairsstatic int findEvenPair( int A[], int N){ int count = 0 ; // find all pairs for ( int i = 0 ; i < N; i++) { if (A[i] % 2 != 0 ) count++; } int totalPairs = (N * (N - 1 ) / 2 ); int oddEvenPairs = count * (N - count); // return number of even pair return totalPairs - oddEvenPairs;}// Driver Code public static void main (String[] args) { int a[] = { 5 , 4 , 7 , 2 , 1 }; int n = a.length; // calling function findEvenPair // and print number of even pair System.out.println(findEvenPair(a, n)); }//This code is contributed by akt_mit} |
Python3
# python program to count pairs# with XOR giving a even number# Function to count number of even pairsdef findEvenPair(A, N): count = 0 # find all pairs for i in range ( 0 ,N): if (A[i] % 2 ! = 0 ): count + = 1 totalPairs = (N * (N - 1 ) / 2 ) oddEvenPairs = count * (N - count) # return number of even pair return ( int )(totalPairs - oddEvenPairs)# Driver Codedef main(): a = [ 5 , 4 , 7 , 2 , 1 ] n = len (a) # calling function findEvenPair # and pr number of even pair print (findEvenPair(a, n)) if __name__ = = '__main__' : main() # This code is contributed by 29AjayKumar |
C #
// C# program to count pairs// with XOR giving a even number using System; public class GFG { // Function to count number of even pairs static int findEvenPair( int []A, int N) { int count = 0; // find all pairs for ( int i = 0; i < N; i++) { if (A[i] % 2 != 0) count++; } int totalPairs = (N * (N - 1) / 2); int oddEvenPairs = count * (N - count); // return number of even pair return totalPairs - oddEvenPairs; } // Driver Code public static void Main() { int []a = { 5, 4, 7, 2, 1 }; int n = a.Length; // calling function findEvenPair // and print number of even pair Console.Write(findEvenPair(a, n)); }}// This code is contributed by 29AjayKumar |
PHP
<?php// PHP program to count pairs// with XOR giving a even number// Function to count number of even pairsfunction findEvenPair( $A , $N ){ $count = 0; // find all pairs for ( $i = 0; $i < $N ; $i ++) { if ( $A [ $i ] % 2 != 0) $count ++; } $totalPairs = ( $N * ( $N - 1) / 2); $oddEvenPairs = $count * ( $N - $count ); // return number of even pair return $totalPairs - $oddEvenPairs ;}// Driver Code$a = array (5, 4, 7, 2, 1);$n = sizeof( $a );// calling function findEvenPair// and print number of even pairecho findEvenPair( $a , $n ) . "
" ;// This code is contributed// by Akanksha Rai?> |
Javascript
<script>// Javascript program to count pairs// with XOR giving a even number// Function to count number of even pairsfunction findEvenPair(A, N){ let count = 0; // find all pairs for (let i = 0; i < N; i++) { if (A[i] % 2 != 0) count++; } let totalPairs = parseInt(N * (N - 1) / 2); let oddEvenPairs = count * (N - count); // return number of even pair return totalPairs - oddEvenPairs;}// Driver Code let a = [ 5, 4, 7, 2, 1 ]; let n = a.length; // calling function findEvenPair // and print number of even pair document.write(findEvenPair(a, n)); </script> |
4
Сложность времени: O (n)
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.