ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

Чемпионат Урала 2016

Описание     Задачи     Отправить на проверку     Состояние проверки     Результаты
Соревнование завершено

B. Утечки памяти

Ограничение времени: 0.5 секунды
Ограничение памяти: 256 МБ
Далеко по свету разнесло уральских программистов. Вот, например, программист Алексей живёт в Долине и разрабатывает инструменты для отладки программ на C++ в компании Google.
Одной из его задач является предсказание возможной утечки памяти.
Алексей долго исследовал возникающие проблемы и понял, что утечка происходит в том и только том случае, когда система приходит в следующее состояние: в нулевом и первом регистрах памяти лежат значения 0 и 1 соответственно, а значения всех остальных регистров зависят друг от друга согласно формуле xn = (xn−1 + xn−2mod p, где nn−1, n−2 — их номера.
Если программа Алексея встречает в регистре с некоторым номером i значение xi, то она считает текущую ситуацию опасной и вычитывает на всякий случай значение следующего регистра с номером i+1. Если оно совпадает с xi+1, то ситуация считается Очень Опасной.
Как-то в программе Алексея произошёл сбой, во время сбоя на вход поступило число x — значение некоторого регистра, но номер этого регистра не определился. Определите, может ли иметь место опасная ситуация. Если может, найдите все возможные значения номера регистра k, при которых ситуация будет опасной, для каждого k найдите значение yk следующего регистра, при котором программа сочтёт ситуацию Очень Опасной.
Заметим, что в Google используются очень мощные сервера, в которых 10100 регистров памяти.

Исходные данные

В первой строке через пробел записаны два целых числа p (2 ≤ p < 109) и x (0 ≤ x < p). Гарантируется, что p — простое.

Результат

Если ситуация может быть опасной, в первой строке выведите количество различных значений yk. Во второй строке перечислите эти значения по возрастанию через пробел.
Если ситуация опасной быть не может, в единственной строке выведите число 0.

Примеры

исходные данныерезультат
7 0
2
1 6 
7 3
1
5 
11 4
0
Автор задачи: Владислав Исенбаев
Чтобы отправить решение этой задачи на проверку перейдите в Архив задач: 2079. Утечки памяти