Friday, June 4, 2021

Published June 04, 2021 by Anonymous with 0 comment

Sum of Bitwise XOR of elements of an array with all elements of another array

#include <bits/stdc++.h>

using namespace std;

  

int xorSumOfArray(int arr[], int n, int k, int count[])

{

  

    

    int sum = 0;

    int p = 1;

  

    

    for (int i = 0; i < 31; i++) {

  

        

        

        int val = 0;

  

        

        if ((k & (1 << i)) != 0) {

  

            

            

            int not_set = n - count[i];

  

            

            val = ((not_set)*p);

        }

        else {

  

            

            val = (count[i] * p);

        }

  

        

        sum += val;

  

        

        

        p = (p * 2);

    }

  

    return sum;

}

  

void sumOfXors(int arr[], int n, int queries[], int q)

{

  

    

    

    int count[32];

  

    

    

    memset(count, 0, sizeof(count));

  

    

    for (int i = 0; i < n; i++) {

  

        

        for (int j = 0; j < 31; j++) {

  

            

            if (arr[i] & (1 << j))

  

                

                count[j]++;

        }

    }

  

    for (int i = 0; i < q; i++) {

        int k = queries[i];

        cout << xorSumOfArray(arr, n, k, count) << " ";

    }

}

  

int main()

{

    int arr[] = { 5, 2, 3 };

    int queries[] = { 3, 8, 7 };

  

    int n = sizeof(arr) / sizeof(int);

    int q = sizeof(queries) / sizeof(int);

  

    sumOfXors(arr, n, queries, q);

  

    return 0;

}

Adblock test (Why?)


Original page link

Best Cool Tech Gadgets

Top favorite technology gadgets
      edit

0 comments:

Post a Comment