Скажем, нам дано число n. Нам нужно найти число значений S^(S + n), лежащих в диапазоне [L, R]. (где S - любое неотрицательное целое число, а^- побитовый оператор xor).Алгоритм: ограниченный XOR чисел в диапазоне
я могу легко это сделать, если п двойки (у них есть очень полезный образец)
Я не знаю, как решить эту проблему для любого общего п. Любые предложения?
РЕДАКТИРОВАТЬ:
п также неотрицательное целое число. n, L, R все меньше 10^18.
Это был вопрос программирования в каком-то практическом тесте, который я когда-то возвращал, я просто вспомнил об этом, увидев аналогичный вопрос в StackOverflow сегодня.
EDIT 2: Объясняя с примером, сказать, п = 1. Тогда мы знаем, что S^(S + 1) будет всегда иметь двоичное представление всех из них. например: 1,3,7, ...
Так что решить это легко, нам просто нужно подсчитать количество таких чисел в пределах диапазона [L, R], это довольно просто.
Для n = любая сила 2 подобных методов работы. Но я понятия не имею, что делать, если n не является степенью 2.
Вы можете указать пример – AnotherGeek
Действительно ли 'n' неотрицательное целое число? –
Существуют ли какие-либо дополнительные ограничения относительно L, R и n? Каков контекст вашего вопроса? –