Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- int main() {
- int t;
- cin>>t;
- while(t--){
- ll N;
- cin>>N;
- vector<ll> bitArr(32,0);
- ll index=0;
- ll n=N;
- while(N>0){
- if(N%2!=0) bitArr[index]=1;
- index++;
- N/=2;
- }
- reverse(bitArr.begin(),bitArr.end());
- ll lsb=32;
- ll msb=-1;
- for(int i=0;i<32;i++){
- if(bitArr[i]==1){
- lsb=i;
- break;
- }
- }
- for(int i=31;i>=0;i--){
- if(bitArr[i]==1){
- msb=i;
- break;
- }
- }
- bool flag=false;
- for(int i=lsb+1;i<=msb-1;i++){
- if(bitArr[i]==0){
- flag=true;
- }
- }
- if(!flag){
- cout<<0<<endl;
- continue;
- }
- ll ans =0;
- ll checkIndex=32;
- for(int i=lsb+1;i<=msb;i++){
- if(bitArr[i]==0){
- bitArr[i]=1;
- checkIndex=i;
- break;
- }
- }
- int j=0;
- for(int i=checkIndex+1;i<=31;i++){
- bitArr[i]=0;
- }
- for(int i=31;i>=0;i--){
- ans+=bitArr[i]*pow(2,j);
- j++;
- }
- cout<<ans-n<<"\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement