func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 105;   long long l, r, dp[N];   long long gao(long long n) {     long long m = n, ans = 0;     int bit[N], len = 0;     while (n) {       bit[++len] = n % 2;       n /= 2;     }     for (int i = 2; i < len; i++) {       memset(dp, 0, sizeof(dp));       dp[1] = 1;       for (int j = 2; j < i; j++) {         if (i % j) continue;         dp[j] += 1LL << (j - 1);       }       for (int j = 1; j <= i; j++) {         for (int k = 2; k * j < i; k++)           if (i % (k * j) == 0) dp[j * k] -= dp[j];       }       for (int j = 1; j <= i; j++) ans += dp[j];     }     for (int i = len; i <= len; i++) {       memset(dp, 0, sizeof(dp));       for (int j = 1; j < i; j++) {         if (i % j) continue;         for (int k = len; k > len - j; k--) {           if (k != len && bit[k] == 1) {             dp[j] += 1LL << (k - (len - j) - 1);           }         }         long long sum = 0;         for (int k = len; k > len - j; k--) {           if (bit[k] == 0) continue;           for (int r = k; r > 0; r -= j) {             sum += 1LL << (r - 1);           }         }         if (sum <= m) dp[j]++;       }       for (int j = 1; j <= i; j++) {         for (int k = 2; k * j < i; k++)           if (i % (k * j) == 0) dp[j * k] -= dp[j];       }       for (int j = 1; j <= i; j++) ans += dp[j];     }     return ans;   }   int main() {     while (cin >> l >> r) {       cout << gao(r) - gao(l - 1) << endl;     }     return 0;   }   