Энергоячейки склада
Просмотр в формате PDFНа автоматизированном складе есть контейнеры с номерами от 1 до L.
У каждого контейнера есть энергетическая ценность, которая вычисляется так: берётся наибольшая степень двойки, на которую делится номер контейнера. Иначе говоря, для контейнера с номером x его ценность равна значению младшего установленного бита числа x.
Например:
- контейнер
1имеет ценность1; - контейнер
6имеет ценность2; - контейнер
12имеет ценность4; - контейнер
16имеет ценность16.
Роботу нужно выбрать несколько различных контейнеров так, чтобы сумма их энергетических ценностей была ровно S.
Требуется определить, можно ли это сделать. Если можно, выведите любой подходящий набор контейнеров.
Входные данные
В единственной строке записаны два целых числа:
S— требуемая суммарная энергетическая ценность;L— максимальный номер контейнера.
Выходные данные
Если подобрать набор невозможно, выведите -1.
Иначе в первой строке выведите число k — количество выбранных контейнеров.
Во второй строке выведите k различных целых чисел — номера выбранных контейнеров.
Если решений несколько, разрешается вывести любое.
Ограничения
1 <= S <= 1000001 <= L <= 100000
Примеры
Пример 1
Входные данные
5 6
Выходные данные
4
6 5 3 1
Пример 2
Входные данные
3 2
Выходные данные
2
2 1
Пример 3
Входные данные
7 4
Выходные данные
3
4 3 2
Комментарии
Добавьте, пожалуйста, в тестирующую систему проверку разных решений, она принимает только авторское.
ага, она в очереди на обновление