// SPRNMBRS // Super Numbers // // Author: Kanstantsin Sokal // Complexity: O(log(log(R)) per one testcase plus O(log(R) ^ 2) per one run // // Expected verdict: AC #include #include #include #include using namespace std; const long long INF = (long long)1e18; vector numbers; void before_testcases_recursion(long long x, int factor) { if (factor == 4) { numbers.push_back(x); return; } if (x * factor <= INF) { before_testcases_recursion(x * factor, factor); } before_testcases_recursion(x, factor + 1); } void before_testcases() { numbers.push_back(1); before_testcases_recursion(2, 2); sort(numbers.begin(), numbers.end()); } int count_between(const vector &v, long long l, long long r) { return upper_bound(v.begin(), v.end(), r) - lower_bound(v.begin(), v.end(), l); } void solve_one_case() { long long l, r; scanf("%lld%lld", &l, &r); int answer = count_between(numbers, l, r); cout << answer << "\n"; } int main() { before_testcases(); int cases; scanf("%d", &cases); for (int i = 0; i < cases; i++) { solve_one_case(); } }