Codeforces Round 132 (Div. 2) |
---|
Закончено |
Непустая строка s называется бинарной, если она состоит только из символов «0» и «1». Пронумеруем символы бинарной строки s от 1 до длины строки и обозначим i-й символ строки s как si.
Бинарную строку s длины n будем называть периодической, если существует целое число 1 ≤ k < n такое, что:
Например, бинарные строки «101010» и «11» являются периодическими, а «10» и «10010» — нет.
Целое положительное число x будем называть периодическим, если бинарная строка, являющаяся записью числа x в двоичной системе счисления (без лидирующих нулей), — периодическая.
Ваша задача — найти количество периодических чисел в отрезке от l до r (оба конца включены).
В единственной строке входных данных записаны два целых числа l и r (1 ≤ l ≤ r ≤ 1018). Числа разделены пробелом.
Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-битных чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.
Выведите единственное целое число — количество периодических чисел в отрезке от l до r (оба конца включены).
1 10
3
25 38
2
В первом примере периодическими числами являются 3, 7 и 10.
Во втором примере периодическими числами являются 31 и 36.
Название |
---|