Problem Description
We define f(X, Y)
as the number of different corresponding bits in the binary representation of X and Y.
For example, f(2, 7)
= 2, since the binary representation of 2 and 7 are 010
and 111
, respectively. The first and the third bit differ, so f(2, 7) = 2.
You are given an array of N positive integers, A1, A2,..., AN. Find sum of f(Ai, Aj)
for all pairs (i, j) such that 1 ≤ i, j ≤ N. Return the answer modulo 109+7.
1 <= N <= 105
1 <= A[i] <= 231 - 1
The first and only argument of input contains a single integer array A.
Return a single integer denoting the sum.
Input 1:
A = [1, 3, 5]
Input 2:
A = [2, 3]
Ouptut 1:
8
Output 2:
2
Explanation 1:
f(1, 1) + f(1, 3) + f(1, 5) + f(3, 1) + f(3, 3) + f(3, 5) + f(5, 1) + f(5, 3) + f(5, 5) = 0 + 1 + 1 + 1 + 0 + 2 + 1 + 2 + 0 = 8
Explanation 2:
f(2, 2) + f(2, 3) + f(3, 2) + f(3, 3) = 0 + 1 + 1 + 0 = 2
NOTE: You only need to implement the given function. Do not read input, instead use the arguments to the function. Do not print the output, instead return values as specified. Still have a question? Checkout Sample Codes for more details.