허구한 날 나와서 지루해 죽겠는 XOR 문제가 또 나와버렸다!
정수 N, K, A, B가 주어진다. A 이상 B 이하의 정수 중 N과 Bitwise XOR 연산을 수행했을 때, 이진수 표기에 1이 정확히 K개 등장하는 수의 개수를 세어보자.
첫 번째 줄에 N, K, A, B가 차례대로 공백을 사이에 두고 주어진다.
정답을 출력한다.
Bitwise XOR은 두 음이 아닌 정수에 대해 수행할 수 있는 연산이다. 음이 아닌 정수 A와 B에 대해, A와 B를 이진수로 나타낸 다음 각 비트별로 서로 같으면 0, 다르면 1을 대응하는 비트로 한 것이 XOR의 결과인 A⊕B가 된다. 예를 들어 A=10, B=6을 생각해 보자. A와 B는 각각 이진수로 표현하면 1010_2와 0110_2이다. 작은 쪽에서부터 첫 번째와 두 번째 비트는 서로 같기 때문에 0, 세 번째와 네 번째 비트는 서로 다르기 때문에 1이 되어 A⊕B는 1100_2=12가 된다.