import
java.util.*;
class
GFG{
static
void
Bitwise_OR_sum_i(
int
arr1[],
int
arr2[],
int
M,
int
N)
{
int
frequency[] =
new
int
[
32
];
Arrays.fill(frequency,
0
);
for
(
int
i =
0
; i < N; i++)
{
int
bit_position =
0
;
int
num = arr1[i];
while
(num !=
0
)
{
if
((num &
1
) !=
0
)
{
frequency[bit_position] +=
1
;
}
bit_position +=
1
;
num >>=
1
;
}
}
for
(
int
i =
0
; i < M; i++)
{
int
num = arr2[i];
int
value_at_that_bit =
1
;
int
bitwise_OR_sum =
0
;
for
(
int
bit_position =
0
;
bit_position <
32
;
bit_position++)
{
if
((num &
1
) !=
0
)
{
bitwise_OR_sum += N * value_at_that_bit;
}
else
{
bitwise_OR_sum += frequency[bit_position] *
value_at_that_bit;
}
num >>=
1
;
value_at_that_bit <<=
1
;
}
System.out.print(bitwise_OR_sum +
" "
);
}
return
;
}
public
static
void
main(String[] args)
{
int
arr1[] = {
1
,
2
,
3
};
int
arr2[] = {
1
,
2
,
3
};
int
N = arr1.length;
int
M = arr2.length;
Bitwise_OR_sum_i(arr1, arr2, M, N);
}
}