Given an array arr[], the task is to calculate the sum of the elements from the given array which has even parity i.e. the number of set bits is even using bitwise operator.
Examples:
Input: arr[] = {2, 4, 3, 5, 9}
Output: 17
Only 3(0011), 5(0101) and 9(1001) have even parity
So 3 + 5 + 9 = 17Input: arr[] = {1, 5, 4, 16, 10}
Output: 15
Approach: Initialize a variable sum = 0 and traverse the array from 0 to n – 1 while counting the number of set bits in arr[i] using Brian Kernighan’s Algorithm. If the count is even then update sum = sum + arr[i]. Print the sum in the end.
Below is the implementation of the above approach:
// C++ program to find the sum of the elements // from an array which have even parity #include <bits/stdc++.h> using namespace std;
// Function that returns true if x has even parity bool checkEvenParity( int x)
{ // We basically count set bits
int parity = 0;
while (x != 0) {
x = x & (x - 1);
parity++;
}
if (parity % 2 == 0)
return true ;
else
return false ;
} // Function to return the sum of the elements // from an array which have even parity long sumlist( int a[], int n)
{ long sum = 0;
for ( int i = 0; i < n; i++) {
// If a[i] has even parity
if (checkEvenParity(a[i]))
sum += a[i];
}
return sum;
} // Driver code int main()
{ int arr[] = { 2, 4, 3, 5, 9 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << sumlist(arr, n);
return 0;
} |
// Java program to find the sum of the elements // from an array which have even parity import java.io.*;
class GFG {
// Function that returns true if x has even parity static boolean checkEvenParity( int x)
{ // We basically count set bits
int parity = 0 ;
while (x != 0 ) {
x = x & (x - 1 );
parity++;
}
if (parity % 2 == 0 )
return true ;
else
return false ;
} // Function to return the sum of the elements // from an array which have even parity static long sumlist( int a[], int n)
{ long sum = 0 ;
for ( int i = 0 ; i < n; i++) {
// If a[i] has even parity
if (checkEvenParity(a[i]))
sum += a[i];
}
return sum;
} // Driver code public static void main (String[] args) {
int arr[] = { 2 , 4 , 3 , 5 , 9 };
int n =arr.length;
System.out.println(sumlist(arr, n));
}
} // This code is contributed by inder_verma.. |
# Python3 program to find the sum of the elements # from an array which have even parity # Function that returns true if x # has even parity def checkEvenParity(x):
# We basically count set bits
parity = 0
while (x ! = 0 ):
x = x & (x - 1 )
parity + = 1
if (parity % 2 = = 0 ):
return True
else :
return False
# Function to return the sum of the elements # from an array which have even parity def sumlist(a, n):
sum = 0
for i in range (n):
# If a[i] has even parity
if (checkEvenParity(a[i])):
sum + = a[i]
return sum
# Driver code if __name__ = = '__main__' :
arr = [ 2 , 4 , 3 , 5 , 9 ]
n = len (arr)
print (sumlist(arr, n))
# This code is contributed by 29AjayKumar. |
// C# program to find the sum of the elements // from an array which have even parity using System ;
class GFG {
// Function that returns true if x has even parity static bool checkEvenParity( int x)
{ // We basically count set bits
int parity = 0;
while (x != 0) {
x = x & (x - 1);
parity++;
}
if (parity % 2 == 0)
return true ;
else
return false ;
} // Function to return the sum of the elements // from an array which have even parity static long sumlist( int []a, int n)
{ long sum = 0;
for ( int i = 0; i < n; i++) {
// If a[i] has even parity
if (checkEvenParity(a[i]))
sum += a[i];
}
return sum;
} // Driver code public static void Main () {
int []arr = { 2, 4, 3, 5, 9 };
int n =arr.Length;
Console.WriteLine(sumlist(arr, n));
}
// This code is contributed by Ryuga
} |
<?php // PHP program to find the sum of the // elements from an array which have // even parity // Function that returns true // if x has even parity function checkEvenParity( $x )
{ // We basically count set bits
$parity = 0;
while ( $x != 0)
{
$x = ( $x & ( $x - 1));
$parity ++;
}
if ( $parity % 2 == 0)
return true;
else
return false;
} // Function to return the sum of the elements // from an array which have even parity function sumlist( $a , $n )
{ $sum = 0;
for ( $i = 0; $i < $n ; $i ++)
{
// If a[i] has even parity
if (checkEvenParity( $a [ $i ]))
$sum += $a [ $i ];
}
return $sum ;
} // Driver code $arr = array ( 2, 4, 3, 5, 9 );
$n = sizeof( $arr );
echo sumlist( $arr , $n );
// This code is contributed by ajit. ?> |
<script> // Javascript program to find the sum of the elements // from an array which have even parity // Function that returns true if x has even parity function checkEvenParity(x)
{ // We basically count set bits
let parity = 0;
while (x != 0)
{
x = x & (x - 1);
parity++;
}
if (parity % 2 == 0)
return true ;
else
return false ;
} // Function to return the sum of the elements // from an array which have even parity function sumlist(a, n)
{ let sum = 0;
for (let i = 0; i < n; i++)
{
// If a[i] has even parity
if (checkEvenParity(a[i]))
sum += a[i];
}
return sum;
} // Driver code let arr = [ 2, 4, 3, 5, 9 ]; let n = arr.length; document.write(sumlist(arr, n)); // This code is contributed by unknown2108 </script> |
17
Time complexity: O(nlogn)
Auxiliary space: O(1)