0330. Половина

Имя входного файла: half.in
Имя выходного файла: half.out
Ограничение по времени: 2 s
Ограничение по памяти: 256 megabytes

У доброжелательного Даниила есть несколько яблок. В силу своей природной доброжелательности, каждый раз, когда он встречает какого-либо своего друга, он смотрит на яблоки, которые у него есть и отдает другу половину.

Но Даниил не одинаково любит всех своих друзей, поэтому некоторым из них он отдает половину яблока, а некоторым – половину имеющихся у него яблок. При этом с глазомером у Даниила не так хорошо, как со щедростью, и делить яблоки более, чем на две части, у него не получается. Поэтому, если он встречает друга, а у него нецелое число яблок, то он вынужден отдать половину яблока.

Утром у Даниила было n яблок, а за день Даниил встретил k друзей. Выясните, сколько яблок у него могло остаться вечером.

Формат входного файла

Входной файл содержит два целых числа: n – количество яблок у Даниила и k – количество встреченных им за день друзей (1 ≤ n ≤ 1000, 1 ≤ k ≤ 1000).

Формат выходного файла

Первая строка выходного файла должна содержать число m – количество вариантов ответа на вопрос, сколько яблок может быть у Даниила вечером. Следующая строка должна содержать m вещественных чисел, отсортированных по возрастанию – варианты ответов.

Пример:

half.inhalf.out
6 1 2 3.0 5.5


Источник: Командный чемпионат школьников Карелии по программированию, 4 ноября 2012

Обсудить       Отправить решение



Версия для печати