Ограничения: время – 5s/10s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Компания BrokenTiles планирует заняться выкладыванием во дворах у состоятельных клиентов узоров из черных и белых плиток, каждая из которых имеет размер `1\ times\ 1` метр. Известно, что дворы всех состоятельных людей имеют наиболее модную на сегодня форму прямоугольника размером `M\ times\ N` метров.
Однако при составлении финансового плана у директора этой организации появилось целых две серьезных проблемы: во первых, каждый новый клиент очевидно захочет, чтобы узор, выложенный у него во дворе, отличался от узоров всех остальных клиентов этой фирмы, а во вторых, этот узор должен быть симпатичным.
Как показало исследование, узор является симпатичным, если в нем нигде не встречается квадрата `2\ times\ 2` метра, полностью покрытого плитками одного цвета.
Для составления финансового плана директору необходимо узнать, сколько клиентов он сможет обслужить, прежде чем симпатичные узоры данного размера закончатся. Помогите ему!
На этот раз его интересует долгосрочная перспектива, поэтому `N\ ≤\ 10^100`. Однако он не любит большие числа, поэтому просит выдать ответ по модулю `P`.
На первой строке входного файла находятся три положительных целых числа, разделенные пробелом – `N`, `M` и `P` (`1\ ≤\ N\ ≤\ 10^100`, `1\ ≤\ M\ ≤\ 5`, `1\ ≤\ P\ ≤\ 10000`).
Выведите в выходной файл количество различных симпатичных узоров `M\ times\ N` по модулю `P`.
Источник: http://neerc.ifmo.ru/school/archive/