func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mod = 9901;   template <class T>   int countbit(T n) {     int t = 0;     while (n) n &= n - 1, ++t;     return t;   }   template <class T>   T lowbit(T n) {     return n & (-n);   }   const double eps = 1e-8;   const double pi = acos(-1.0);   const int INF = 0x7f7f7f7f;   const int maxn = 111111;   void File() {     freopen( input.txt ,  r , stdin);     freopen( output.txt ,  w , stdout);   }   long long c[66][66];   long long go(long long n, long long t) {     int cnt = 0;     long long tt = t;     while (tt) tt >>= 1, ++cnt;     int arr[65];     int i, size = 0;     while (n) arr[size++] = n & 1, n >>= 1;     reverse(arr, arr + size);     long long ans = 0;     bool flag;     int ct = count(arr, arr + size, 1);     for (i = 0; i < size; ++i) {       flag = true;       if (arr[i]) {         if (size - i == ct && ct == cnt && cnt)           ans++, flag = false;         else {           if (cnt >= 0) ans += c[size - i - 1][cnt], --cnt;         }         --ct;       }       if (i && !cnt) {         ans++;         break;       }       if (!flag) break;     }     if (t == 1) ans--;     return ans;   }   int main() {     ios::sync_with_stdio(false);     int i, j;     for (i = 0; i < 66; ++i) {       c[i][i] = c[i][0] = 1;     }     for (i = 1; i < 66; ++i) {       for (j = 1; j < i; ++j) {         c[i][j] = c[i - 1][j - 1] + c[i - 1][j];       }     }     long long n, t;     cin >> n >> t;     int k = countbit(t);     if (k == 1)       cout << go(n + 1, t) << endl;     else       cout << 0 << endl;     return 0;   }   