Рассмотрим четыре круга, пересекающиеся так, как показано на рисунке.
Назовём лепестком каждую из трёх фигур, образованных пересечением
трёх кругов.
Запишем в каждом из кругов ноль или единицу. После этого в каждом лепестке
запишем остаток при делении на два суммы чисел во всех кругах, в которых
содержится этот лепесток. Например, если в кругах были записаны числа
0, 1, 0, 1, то в лепестках будут записаны числа 0, 1, 0 (круги и
лепестки перечислены в порядке, указанном на рисунке).
Описанная схема называется кодом Хэмминга и обладает интересным
свойством. Если ваш враг в тайне от вас изменит любое из семи
записанных по этой схеме чисел, вы сможете однозначно определить, какое число
он изменил. Решив эту задачу, вы узнаете, как это сделать.
Исходные данные
В единственной строке через пробел записаны семь чисел. Каждое из чисел
равно нулю или единице. Сперва идут четыре числа, записанные в кругах в порядке,
указанном на рисунке. Далее идут три числа, записанные
в лепестках в порядке, указанном на рисунке.
Результат
В единственной строке выведите через пробел семь чисел, образующие код
Хэмминга. Набор чисел должен отличаться от исходного не более чем в одном числе.
Гарантируется, что любой набор входных данных либо сам является кодом
Хэмминга, либо в нём можно изменить в точности одну цифру и получить код Хэмминга.
Примеры
исходные данные | результат |
---|
0 1 0 1 1 0 1
| 0 1 0 0 1 0 1
|
1 1 1 1 1 1 1
| 1 1 1 1 1 1 1 |
Автор задачи: София Техажева, подготовка — Ольга Соболева
Источник задачи: Уральская региональная командная олимпиада по программированию 2010