1. (A and B)들의 합 구하기
1의 자리만 보자. A 수열의 1 비트 개수 * B 수열의 1 비트 개수 임
이렇게 2^0 ~ 2^28 까지 보면 된다.
2. (A + B)들의 and 구하기
and를 구한다는 말은 더한 값중에서 하나라도 0이 되면 해당 비트는 0이라는 뜻임.
예를 들어서 4의 자리를 생각해보자.
A_1를 8로 나눈 나머지가 2라면 B 중에서 2, 3, 4, 5 (mod 8) 만 있고 나머지는 없어야 함.
이런 식으로 A_1 ~ A_n를 쭉 읽어주면서 B가 가능한 범위를 좁혀나갈 수 있음.
그 이후 해당 범위에 모든 B가 포함되면 그 비트는 1, 아니면 0
따라서 O(N log K)에 풀 수 있음. (K는 입력으로 들어오는 수의 최대 크기)
잘모르겠는데 좀더 자세한 설명 가능하신가요? - dc App
UCPC 공식 풀이 찾아보시면 될듯