Олимпиадный тренинг

Задача . F. Фибоначчиевы подпоследовательности


Дана бинарная строка s (каждый символ в строке равен либо 0, либо 1).

Определим стоимость строки t как количество вхождений s в t. Например, если s равна 11 и t равна 111011, то стоимость t равна 3.

Определим также фибоначчиевы строки следующим образом:

  • F(0) равна 0;
  • F(1) равна 1;
  • F(i) = F(i - 1) + F(i - 2) для i > 1, где  +  означает конкатенацию двух строк.

Ваша задача — посчитать сумму стоимостей всех подпоследовательностей строки F(x). Так как ответ может быть очень большим, выведите его по модулю 109 + 7.

Входные данные

В первой строке записаны два целых числа n и x (1 ≤ n ≤ 100, 0 ≤ x ≤ 100) — длина строки s и номер требуемой фибоначчиевой строки, соответственно.

Во второй строке содержится s — строка, состоящая из n символов. Каждый из этих символов равен либо 0, либо 1.

Выходные данные

Выведите одно целое число — сумма стоимостей всех подпоследовательностей строки F(x) по модулю 109 + 7.


Примеры
Входные данныеВыходные данные
1 2 4
11
14
2 10 100
1010101010
553403224

time 3500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя