Advertisement
Ankit_132

C

Feb 21st, 2024
958
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5.  
  6. int main() {
  7.     int t;
  8.     cin>>t;
  9.    
  10.     while(t--){
  11.          
  12.     ll N;
  13.     cin>>N;
  14.     vector<ll> bitArr(32,0);
  15.     ll index=0;
  16.     ll n=N;
  17.     while(N>0){
  18.     if(N%2!=0) bitArr[index]=1;
  19.      index++;
  20.      N/=2;
  21.     }
  22.     reverse(bitArr.begin(),bitArr.end());
  23.  
  24.    ll lsb=32;
  25.    ll msb=-1;
  26.  
  27.    for(int i=0;i<32;i++){
  28.      if(bitArr[i]==1){
  29.         lsb=i;
  30.         break;
  31.      }
  32.    }
  33.     for(int i=31;i>=0;i--){
  34.      if(bitArr[i]==1){
  35.         msb=i;
  36.         break;
  37.      }
  38.    }
  39.  
  40.    bool flag=false;
  41.    for(int i=lsb+1;i<=msb-1;i++){
  42.     if(bitArr[i]==0){
  43.         flag=true;
  44.     }
  45.    }
  46.  
  47.    if(!flag){
  48.     cout<<0<<endl;
  49.     continue;
  50.    }
  51.  
  52.     ll ans =0;
  53.     ll checkIndex=32;
  54.     for(int i=lsb+1;i<=msb;i++){
  55.         if(bitArr[i]==0){
  56.             bitArr[i]=1;
  57.             checkIndex=i;
  58.             break;
  59.         }
  60.     }
  61.     int j=0;
  62.     for(int i=checkIndex+1;i<=31;i++){
  63.         bitArr[i]=0;
  64.     }
  65.     for(int i=31;i>=0;i--){
  66.         ans+=bitArr[i]*pow(2,j);
  67.         j++;
  68.     }
  69.     cout<<ans-n<<"\n";
  70.     }
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement