Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Экскурсии под руководством Ивана Петровича проходят всегда очень организованно.
Ивану Петровичу особенно нравятся построения в форме квадрата, так как если какой-то школьник отстанет от группы,
его отсутствие в квадрате является более заметным, чем при использовании построения в форме шеренги и колонны по одному.
Поэтому школьники разбиваются на несколько групп, для которых возможно построение в форме квадрата. Чтобы разные группы
были хорошо различимы визуально, требуется, чтобы в разных группах было разное число школьников.
Из 100 школьников можно сделать одну группу `10\ times\ 10`, или две группы `6\ times\ 6` и `8\ times\ 8`, но лучше
с точки зрения Ивана Петровича сделать 5 групп `1\ times\ 1`, `3\ times\ 3`, `4\ times\ 4`, `5\ times\ 5` и
`7\ times\ 7`.
Напишите программу, которая находит разбиение `N` школьников на группы в форме квадратов, среди которых нет двух одинаковых
по количеству. Количество групп в разбиении должно быть как можно больше.
В первой строке ввода содержится одно целое число `N` (`1\ ≤\ N\ ≤\ 10^5`) – число школьников, отправляющихся на экскурсию.
Если разбиение найдено, то вывести в первой строке количество групп в разбиении, а во второй строке – в
порядке возрастания размеры стороны квадратных групп.
Если существует несколько разбиений с максимальным количеством групп, то можно вывести одно из них (любое).
Если разбиения не существует, в первой строке вывести 0.
Пример вывода
5
1 3 4 5 7