PROBLEM LINK:
Author: Ashish Chaudhary
DIFFICULTY:
Easy
PROBLEM:
You are given a number X. You have to choose a number Y(greater than or equal to X) such that taking XOR of any number from 1 to X-1 with Y always results in a number greater than Y.
Print the minimum possible value of Y.
EXPLANATION:
For every number N, which is a power of 2, has only one bit set in its binary representation,i.e. MSB. Even if we take the XOR of N with any number from 1 to N-1, it has no effect on the most significant bit of N.
So smallest power of 2 which is greater than or equal to X is the desired answer.
SOLUTION:
Setter's Solution
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define boost ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int main()
{
boost
ll t;
cin>>t;
while(t--)
{
ll n;
cin>>n;
ll cn=n;
ll co=0;
while(n!=0)
{
n/=2;
co++;
}
if((1LL<<(co-1))==cn)
{
cout<<cn<<endl;
}
else
cout<<(1LL<<co)<<endl;
}
return 0;
}