# K-th smallest positive integer having sum with given number equal to bitwise OR with given number

Given two positive integers X and K, the task is to find the K-th smallest positive integer Y, such that X + Y = X | Y, where | denotes the bitwise OR operation.Example:Input: X = 5, K = 1Output: 2Explanation: The first number is 2 as (2 + 5 = 2 | 5 )Input: X = 5, K = 5Output: 18Explanation: The list of correct values is 2, 8, 10, 16, 18. The 5th number is this list is 18Approach: Given problem can be solved following the below mentioned steps:Let the final value be Y. From the properties of bitwise operations, it is known that X + Y = X & Y + X | Y, where & is a bitwise AND of two numbersFor the equation in the problem statement to be true, the value of X & Y must be 0So for all positions, if the ith bit is ON in X then it must be OFF for all possible solutions of YFor instance, if X = 1001101001 in binary (617 in decimal notation), then the last ten digits of y must be Y= 0**00*0**0, where ‘*’ denotes either zero or one. Also, we can pad any number of any digits to the beginning of the number, since all higher bits are zeroesSo the final solution will be to treat all the positions where the bit can be 0 or 1 as a sequence from left to right and find the binary notation of K.Fill all positions according to the binary notation of KBelow is the implementation of the above approach:C++#include using namespace std; long long KthSolution(long long X, long long K){ long long ans = 0; for (int i = 0; i < 64; i++) { if (!(X & (1LL = 1; if (!K) { break; } } } return ans;}int main(){ long long X = 5, K = 5; cout