mickypinata

PROG-T1048: Find the Distance

Jun 12th, 2021
1,404
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long lli;
  5.  
  6. const int logN = 31;
  7.  
  8. lli dp[logN + 10];
  9.  
  10. int main(){
  11.  
  12.     dp[0] = 1;
  13.     for(int i = 1; i <= logN; ++i){
  14.         dp[i] = dp[i - 1] + dp[i - 1] + 1;
  15.     }
  16.     lli x;
  17.     scanf("%*d%lld", &x);
  18.     lli sum = 0;
  19.     for(int i = logN; i >= 0; --i){
  20.         if(x >= ((lli)1 << i)){
  21.             x -= ((lli)1 << i);
  22.             sum += dp[i];
  23.         }
  24.     }
  25.     cout << sum;
  26.  
  27.     return 0;
  28. }
  29.  
RAW Paste Data